프로세스와 스레드
·
👶🏻 CS/Operating System
프로세스와 스레드란?프로그램프로그램은 윈도우의 .exe 파일이나 Mac의 .dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일을 통칭한다.,단 아직 실행되지 않은 상태의 코드 덩어리를 의미한다. 프로세스프로세스는 실행 중인 프로그램을 말한다, 모든 프로그램은주소 공간, 파일, 메모리 등 자원이 필요한데 운영체제로부터 이 자원을 할당받은 프로그램을 의미한다. 스레드스레드는 프로세스 내에서 동시에 진행되는 흐름의 단위이다. 과거에는 프로그램을 실행할 때 하나의 프로세스만 사용했다.예를 들어, 파일을 다운로드하면 다운로드가 끝날 때까지 다른 작업을 수행할 수 없었다.기술이 발전하며 프로그램이 점점 더 복잡해지면서 단일 프로세스로는 한계가 있었고, 여러 프로세스를 사용하면 메모리를 낭비하고 CPU 자원을 중복..
임계 구역(Critical Section)과 뮤텍스, 세마포어, 모니터
·
👶🏻 CS/Operating System
경쟁 상태여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 접근하냐에 따라 결과 값이 달라지는 것을 경쟁 상태(Race Condition)이라고 한다. 이러한 문제를 방지하기 위해 동기화 기법이 사용되며, 이때 공유 자원에 접근하는 코드가 임계 구역(Critical Section)이다.   Critical Section Problem(임계 구역 문제)임계 구역은 하나의 프로세스나 스레드만 들어갈 수 있는 코드 영역이다.예를 들어, 여러 스레드가 같은 메모리 영역에 값을 쓰려고 하면 충돌이 발생할 수 있는데, 이때 각 스레드가 동시에 해당 메모리 영역을 쓰지 않도록 보호해야 한다. 이러한 설계를 위해서는 3가지 요구조건을 만족해야 한다. 1. Mutual Exclusion(상호 배제)하나의..
Sync&Async, Blocking&Non-Blocking
·
👶🏻 CS/Operating System
이 4가지는 IO(입출력)를 처리할 때 접할 수 있는 용어들이다. Blocking&Non-BlockingBlocking&Non-Blocking은 단어 그대로 현재 작업이 block(차단, 대기)되느냐 아니냐의 차이다. Blocking은 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것이다.(제어권이 넘어간 것)Non-Blocking은 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것이다.(제어권을 돌려받는 것) Sync&Async동기/비동기는 요청한 작업에 대해 순서가 지켜지는지, 결과에 관심이 있는지에 대한 관점에 있다. A프로세스가 본인 작업을 하다가 B프로세스에게 어떤 작업을 요청한다고 가정해 보자. Sync는 본인이 하던 작업을..