Operation/OS 5

OS - 세마포어(Semaphore)와 뮤텍스(Mutex) (+ Race Condition)

공유 자원에 대해 여러 프로세스가 동시에 접근하면서, 결과값에 영향을 줄 수 있는 상태를 Race Condition(경쟁 상태)이라 한다. 공유 자원에 결함이 발생할 수 있음 Race Condition이 발생하는 경우와 해결 방법 커널 작업을 수행하는 중에 인터럽트 발생 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다. 프로세스가 'System Call'을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환이 발생할 때 문제점 : 프로세스1이 커널모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU 제어권이 프로세스2로 ..

Operation/OS 2022.10.03

OS - Process의 생성과 제어를 위한 System Calls!

Process의 생성과 제어를 위한 4가지 SystemCall에 대해 알아보자. Fork Wait Exec Exit Fork 새로운 Process를 생성한다. #include #include #include int main(int argc, char *argv[]) { printf("pid : %d", (int) getpid()); // pid : 29146 int rc = fork(); // 주목 if (rc < 0) { exit(1); } // (1) fork 실패 else if (rc == 0) { // (2) child 인 경우 (fork 값이 0) printf("child (pid : %d)", (int) getpid()); } else { // (3) parent case printf("par..

Operation/OS 2022.10.03

블로킹(Blocking)과 논 블로킹(Non-Blocking)!

동기와 비동기, 블로킹과 논 블로킹을 같은 것이나 비슷한 것이라고 오해하는 경우가 많다. 해당 개념들은 전혀 다른 개념이며 직접적인 관련이 없다. Caller와 Callee 먼저 아래 개념을 이해하자. Caller: 호출하는 함수를 말한다. Callee: 호출당하는 함수를 말한다. 동기 & 비동기 동기와 비동기는 프로세스의 수행 순서 보장에 대한 매커니즘이다. 동기(Synchronous)는 Caller가 Callee의 작업 결과를 기다린다. 비동기(Asynchronous)는 Caller는 Callee의 작업 결과에 관심이 없다. Callee가 Caller에게 Callback을 수행한다. (Callee에서 예외가 터져도 Caller는 영향을 받지 않는다.) 일반적으로 Blocking(블로킹)과 Async(..

Operation/OS 2022.07.06

OS - 프로세스와 스레드 차이

프로세스 프로세스를 알기 전에 프로그램을 알아야 한다. 프로그램(Program)은 어떤 작업을 위해 실행할 수 있는 파일을 말한다. 프로세스의 사전적 정의는 다음과 같다. 컴퓨터에서 연속적으로 실행하고 있는 컴퓨터 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 자원의 단위 정리하면 프로그램의 실행된 부분을 의미한다. 프로세스는 다음의 특징을 갖는다. 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다. 코드 영역(code area): 프로그래머가 작성한 프로그램이 저장되는 영역 데이터 영역(data area): 코드가 실행되면서 사용한 환경이나 파일들의 각종 데이터들이 모여있다. 스택 영역(stack area..

Operation/OS 2022.07.05

OS - 교착 상태(Deadlock) 정리!

교착상태(Deadlock) 교착상태는 다중 프로그래밍 환경에서 나타날 수 있는 문제점으로, 2개 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상이다. 교착상태는 위와 같이 그림으로 표현할 수 있다. 프로세스1은 자원 A가 필요하다. 자원 A는 프로세스2에 의해 잠겨져있다. 프로세스2는 자원 B가 필요하다. 자원 B는 프로세스1에 의해 잠겨져있다. 즉, 어느 한 프로세스를 강제적으로 종료하지 않으면 컴퓨터가 정지된 것 처럼 어떤 작업도 수행할 수 없다. 발생 조건 교착상태의 발생 조건은 아래 4가지를 모두 만족하는 것이다. 하나라도 만족하지 않으면 절대로 데드락이 발생하지 않는다. 상호 배제(Mutual exclusion) 한 리소스는 한..

Operation/OS 2022.04.19