본문 바로가기

컴퓨터 공학 전공/운영체제

(4)
Process Synchronization (1) Synchronization (동기화) 여러 프로세스가 협업할 수 있도록 하는 수단 공유되는 자원들을 적절하게 조정함으로써 협동할 수 있도록 한다 e.g. variables, files 정확성을 위해서 필요 각각의 프로세스들은 얽혀 있지만 독립적으로 작동 (속도 예측 불가) CPU 스케줄링은 OS 관할이라 프로그래머가 어떻게 동작할지 예상하지 않는다 여러 프로세스들이 실행되는 환경에서 의도대로 동작시키기 위해 프로세스뿐만 아니라 스레드도 해당 Synchronization problem 동기화를 시키지 않으면 많은 문제가 발생하지만 일단 대표적인 예를 들어보려 한다. 1. 현금 인출 두 개의 프로세스가 현금을 인출하는 상황이다. balance가 100만 원이고 account가 10만 원이라 가정해보자. 1..
CPU Scheduling CPU Scheduling: runnable processes 중에 누가 다음 순서로 실행될지를 결정하는 것 Scheduling algorithm의 목표 모든 시스템 No starvation 우선순위에 비례한 Fairness: 각각의 프로세스에 우선순위에 맞게 CPU 자원을 공유 Balance: 시스템의 모든 part들이 바쁘게 움직이도록 유지 Batch 시스템 Throughput: 시간당 처리하는 job 수가 최대 Turnaround time: 작업 처리 소요 시간이 최소 CPU utilization: CPU가 항상 유의미한 작업을 실행 Interactive 시스템 Response time: 요청에 가능한 한 빨리 응답 Proportionality: 사용자들의 기대에 충족 Real-time 시스템 Me..
Thread Thread가 떠오른 배경 프로세스는 너무 무겁다 각각의 프로세스는 address space를 가져서 code와 data를 따로 차지한다 OS 자원과 정보 Hardware State 프로세스를 구성하기 위한 공간과 data structure가 필요하기 때문에 새로운 프로세스를 생성하는 비용이 너무 비싸다 OS를 거쳐서 IPC를 하는 비용이 너무 비싸다 위와 같은 치명적인 이유들로 Thread가 부상되었고 다음의 특징을 가진다 code와 data 영역을 공유한다 같은 권한을 가진다 자원들을 공유한다 자신만의 hardware state를 가진다 프로세스가 모든 자원과 공간을 독립적으로 가지고 있는 개체라고 한다면 스레드는 공통된 부분은 공유하고 필요한 부분만 독립적으로 구성되어있다. Process vs. T..
Process ※ 운영체제 정리에 앞서 정리한 자료는 한국외대 컴퓨터전자시스템공학부 이윤석 교수님의 수업 자료를 참고하였음을 밝힌다. 1. 프로세스란 무엇인가? 실행 중인 프로그램 실행과 스케줄링의 기본 단위 각각의 프로세스는 고유한 id를 가지고 있어서 그것으로 구분한다 (pid) 각 프로세스가 소유하고 있는 것: CPU contexts (registers) OS resources (memory, open files, etc.) Other information (PID, state, owner, group, etc.) 각 프로세스는 그들 자신만의 address space와 open files, virtual CPU를 가져서 독립적으로 작동한다. 2. Process Address Space 위의 그림은 우리가 흔히 프..