본문 바로가기

COMPUTER SCIENCE/OS7

[OS] Deadlock Deadlock 위의 사진의 경우, S = Q = 1 일 때, P0 의 wait(S) 에 의해 S는 0이, P1의 wait(Q) 에 의해 Q 는 0 이된다. P0 가 wait(Q) 를 실행할 때, P1 이 signal(Q) 를 실행할 때까지 대기해야한다. 비슷하게 P1 이 wait(S) 를 실행할 때, P0가 signal(S) 를 실행할 때까지 기다려야 한다. 결국 P0 와 P1은 무한 대기하게 되며 이를 deadlock 되었다고 한다. resource 를 가지고 있고 다른 프로세스가 보유한 resource 를 얻기 위해 대기하는 block 된 프로세스들의 집합을 Deadlock 이라고 한다. Deadlock Necessary Conditions Deadlock 이 발생하려면 다음 네 가지 조건을 동시에.. 2023. 8. 21.
[OS] Synchronization Producer-Consumer item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int count = 0; 몇 가지 변수들을 공유하며 producer 와 consumer 의 코드는 위와 같다고 하자. 이 코드들은 BUFFER SIZE − 1 크기의 버퍼를 공유하며 사용하도록 하는 코드이다. 개별적으로 보면 잘 작동할 것 같지만, 동시에 실행하면 문제가 발생할 수 있다. 예를 들어, count 가 5 이고 producer 와 consumer 가 동시에 실행된다면 "count++" 과 "count--" 이후의 count 값이 4, 5, 6 이 될 수 있다. Race Condition "count++" 과 "count--" 의 동시 실행은 위와 같이 이루어 진다. 위.. 2023. 8. 16.
[OS] Threads Thread CPU utilization 의 기본 단위로, thread ID, PC(Program Counter), reigster set , stack 으로 이루어져 있다. 같은 프로세스에 속한 스레드들은 프로세스의 code section, data section, open files 와 signals 같은 os 자원을 공유한다. Linux/Unix 와 Window 같은 현대 OS 는 multithreaded programming 을 지원한다. 프로세스는 a set of threads 와 a collection of resources 라는 두 가지 구성요소로 나눌 수 있는 복합 엔티티이다. 실행의 단위는 스레드이다. 프로세스는 실행 흐름을 담당하는 메인 스레드를 가짐 프로세스는 실행 권한을 메인 스레드.. 2023. 7. 27.
[OS] CPU Scheduling CPU Scheduling 은 멀티프로그래밍 OS 의 기초가 된다. 최신 OS 에서 실제로 OS에 의해 스케줄링 되는 것은 프로세스가 아닌 kernel-level threads 이다. (kernel-level thread 에 대해서는 Thread 에서 언급 예정) 그렇지만 프로세스 스케줄링과 스레드 스케줄링은 종종 같은 의미로 사용되며, 일반적인 스케줄링 개념을 논의할 때는 보통 프로세스 스케줄링을 사용한다. Process Concept process execution 은 CPU execution 과 I/O wai 의 순환으로 구성된다 CPU burst : Cycle of CPU execution I/O burst : Cycle of I/O wait process execution 은 CPU burst .. 2023. 7. 14.
[OS] Process - IPC (Interprocess Communication) Independent Process & Cooperating Process OS 에서 실행되는 프로세스들은 Independent process 나 Cooperating process 중 하나이다. Independent process 는 다른 프로세스에게 영향을 주거나 받을 수 없다. 즉, 다른 프로세스와 data 를 공유하지 않는 프로세스는 Independent process 이다. Cooperating process 는 다른 프로세스에게 영향을 주거나 받을 수 있다. 즉, 다른 프로세스와 data 를 공유하는 프로세스는 Cooperating process 이다. 다른 프로세스와 협력을 하는 이유는 다음과 같다. Information sharing : 동일한 정보에 접근이 필요할 수 잇음 Computat.. 2023. 7. 10.
[OS] Process - Operations on Processes Process Creation 프로세스는 새로운 프로세스들을 생성할 수 있다. 이때 새로 생성된 프로세스들은 child process, 이를 만든 프로세스는 parent process 라고 하며 프로세스들은 tree 모양을 이룬다. 대부분의 OS들은 프로세스들을 unique process identifier(pid) 로 구분한다. LInux OS 의 경우, systemd process가 모든 user process들의 root parent process 이며 system이 boot될 때 생성되는 first user process 이다. system 이 boot 되면 systemd process 는 추가적인 service들을 제공하는 프로세스들을 생성한다. Resource Sharing child proc.. 2023. 7. 10.
[OS] Process - Process Concept & Scheduling Program and Process Program disk 에 저장되어 있으며, 명령어들의 리스트를 포함하는 파일같은 passive entity program 자체는 process 가 아님 Process 실행 중인 프로그램 또는 실행 중인 프로그램의 instance 다음에 실행할 명령어를 가리키는 program counter 와 관련 resouces(memory, files, socket, etc) 들이 있는 active entity virtual address space 와 control information 으로 구성 program 은 실행가능한 파일이 메모리에 올라가면 process 가 됨 현재 활동중인 프로세스의 상태는 program counter의 값과 processor's register 의 .. 2023. 7. 3.