CS/운영체제 12

[운영체제] KOCW 반효경 교수님 강의 - 11. Process Synchronization 1

Race Condition 보통 데이터를 읽으면 -> 연산 처리를 마치고 -> 다시 데이터를 저장 그런데 연산을 처리하는 동안 그 값을 다른 누군가 가져가서 다른 연산 -> 문제가 발생할 수 있음 이렇게 데이터에 동시에 접근하여 문제를 발생시킬 수 있는 상황을 race condition이라고 함 Race condition이 발생하는 환경 Race condition이 발생할 것 같지 않음 CPU가 1개면 메모리 접근을 혼자서 함 프로세스는 자신의 메모리 영역만 접근 CPU가 여러 개인 시스템 메모리에서 한 CPU가 데이터를 가져가서 처리중 다른 CPU가 그 데이터(메모리)에 접근하여 다른 연산 처리 공유 메모리 (커널 데이터) 한 프로세스가 시스템 콜을 호출하여 커널모드에서 동작 커널모드에서 동작한다는 것..

CS/운영체제 2022.05.03

[운영체제] KOCW 반효경 교수님 강의 - 11. CPU Scheduling 2

CPU 스케줄링이 필요한 이유 CPU bound job과 I/O bound job이 섞여있음 RR이 적절한 스케줄링 (I/O bound job이 빠르게 나갈 수 있음) 효율적인 RR이 가능한 이유는 Context를 저장하고 복구할 수 있는 Context Switching이 가능하기 때문 Multilevel Queue 컨셉 지금까지는 한 줄에서 기다리는 경우, multilevel queue는 여러 줄로 기다리는 경우 우선순위에 따라 우선순위가 높은 큐의 job을 먼저 실행 고민해볼 문제 1. 큐 내에서 어떤 프로세스에게 할당? 2. 우선순위 높은 큐에 무조건 할당? -> starvation Multilevel Queue Ready queue를 여러 개로 분할 각 큐는 독립적인 스케줄링 알고리즘을 가짐 fo..

CS/운영체제 2022.04.12

[운영체제] KOCW 반효경 교수님 강의 - 10. CPU Scheduling 1

CPU 스케줄링에서 중요한 2가지 이슈 CPU bust에 들어온 여러 프로세스들 중 누구에게 CPU를 줄것인가? CPU를 할당한 후에 점유한 프로세스가 CPU를 계속 사용하도록 둘 것인가 뺏을 것인가? CPU를 뺏지 않는 경우 CPU bound job이 CPU를 할당하면 CPU를 잠깐 사용하고 반납할 I/O bound job들이 긴 시간 동안 줄서서 기다려야함 CPU 스케줄링의 종류 1. Non-preemptive 스케줄링 CPU를 가진 프로세스가 자진 반납할 때까지 CPU를 점유 비선점형 2. Preemptive 스케줄링 현대 스케줄링 방식 강제로 CPU를 가져올 수 있는 방식 선점형 좋은 스케줄링 평가 (성능 척도, Performe-ance Idex, Performeance Measure) 1. 시스..

CS/운영체제 2022.04.06

[운영체제] KOCW 반효경 교수님 강의 - 9. Process Management 2

프로세스 생성 부모가 자식을 복제 생성 문맥을 복제 (메모리, PC 등) 그러나 쓰레드에서 본 것과 같이, 똑같은 내용을 2copy 만드는 것은 메모리 낭비 Copy on Write 이로 인해, 자식 프로세스가 생성되면 부모 프로세스와 메모리를 공유하게됨 자식이 명령어를 수행하면서 내용이 바뀔 때마다 copy 즉, write를 할 때마다 copy 최대한 공유하며 잘게 쪼게진 단위로만 copy fork, exec int main() { int pid; pid = fork(); if (pid == 0) printf("\n Hello, I am child!\n"); else if (pid > 0) printf("\n Hello, I am parent!\n"); } fork() 시스템 콜 자식 프로세스는 for..

CS/운영체제 2022.03.30

[운영체제] KOCW 반효경 교수님 강의 - 8. Process Management 1

프로세스 생성 누가 생성? - 부모 프로세스가 자식 프로세스를 생성 자원 공유 1. 부모 프로세스와 자식 프로세스가 자원을 공유하는 모델 2. 공유하지 않는 모델이 있음 일반적으로 자식 프로세스는 생성 이 후 별도의 프로세스이므로 공유하지 않음 수행 1. 부모와 자식이 공존하는 모델 2. 자식이 종료될 때까지 기다리는 모델(blocked) 생성과정 부모 프로세스의 공간을 복사 (PCB, 메모리 등) - fork() 시스템 콜 자식이 복사된 공간에 새로운 프로그램을 올림 - exec() 시스템 콜 시스템 콜을 통해 운영체제를 통해서 생성해야함 프로세스 종료 프로세스가 마지막 명령을 수행 후 운영체제에게 종료를 알림 - exit 시스템 콜 프로세스는 부모보다 자식이 먼저 종료되야함 자식이 종료될 때 부모에게..

CS/운영체제 2022.03.30

[운영체제] KOCW 반효경 교수님 강의 - 7. Process 3

Thread의 장점 빠른 응답성 자원 절약(공유되는 메모리) -> CPU 수행 관련 정보만 따로 가짐 다중쓰레드의 협력으로 throughput을 높일 수 있음 CPU가 여러 개일 경우 병렬성을 높일 수 있음 Thread의 장점 정리 Responsiveness 웹 브라우저에서 html 문서를 가져옴 렌더링 중에 image가 필요함 image를 요청(blocked) [쓰레드] 하나의 쓰레드가 image를 요청(blocked) [쓰레드] 다른 쓰레드는 이미 가져온 텍스트를 렌더링 [쓰레드] 더 빨리 문서를 볼 수 있음 Resource Sharing 똑같은 작업을 하는 두 쓰레드가 자원을 공유 Economy creating - 프로세스를 생성하는 것보다 쓰레드를 생성하는 cost가 더 적게 소모 - CPU 수행..

CS/운영체제 2022.03.30

[운영체제] KOCW 반효경 교수님 강의 - 6. Process 2

프로세스가 입출력 요청을 했을 때 입출력 처리는 운영체제를 통해서 해야하므로, 운영체제에게 입출력 요청을 함 입출력 요청은 시간이 오래 걸림 동기식 입출력 - 입출력이 끝날 때까지 기다리고 아무것도 하지 말고 기다려야하는 것 비동기식 입출력 - 입출력이 진행되는 동안, 이 프로세스가 CPU를 잡아서 명령어를 실행하는 것 동기식 입출력 구현방법 동기식 입출력이므로, I/O가 요청된 후 이 프로세스는 일을 못함 구현방법 1 I/O가 끝날 때까지 CPU를 가지고 있으면서 기다림 구현방법 2 어차피 일을 못하므로 CPU를 다른 프로세스에게 넘겨줌 Thread 개요 프로세스 내부에 CPU 수행 단위가 여러개 있는 경우 같은 일을 하는 프로세스를 여러 개 띄워놓고 싶은 경우 주소 공간 (메모리)를 하나만 띄워 놓고..

CS/운영체제 2022.03.28

[운영체제] KOCW 반효경 교수님 강의 - 5. Process 1

프로세스 program in execution = 실행중인 프로그램 프로세스의 문맥(context)이 중요 프로세스 context 특정 시점에서 프로세스가 어디까지 수행했는지, stack/data/code와 PC와 register 등 어떤 상태인지 프로세스의 현재 상태를 정의 1. CPU 수행 상태를 나타내는 하드웨어 문맥 - PC, register - 이 프로세스가 instruction을 어디까지 실행했는지 2. 프로세스의 주소 공간 - code, data, stack - 현 시점의 프로세스 주소공간에 어떤 내용이 들어가 있는가 3. 프로세스 관련 커널 자료구조 - PCB, 커널 스택 - 프로세스가 실행될 때마다 운영체제가 PCB를 하나씩 두고 관리 - 시스템 콜이 발생할 때마다 커널에서 stack으로..

CS/운영체제 2022.03.28

[운영체제] KOCW 반효경 교수님 강의 - 4. System Structure & Program Execution 2

인터럽트 인터럽트마다 처리해야될 작업이 커널에 함수로 정의되어있음 인터럽트 벡터 : 인터럽트 종류를 식별 인터럽트 벡터로 커널의 주소를 식별하여 CPU가 처리해야할 작업을 찾음 인터럽트의 종류 하드웨어 인터럽트(Interrupt) device controller와 같은 하드웨어가 발생시킨 인터럽트 소프트웨어 인터럽트(Trap) 1) 시스템 콜 : 사용자 프로그램이 운영체제 함수를 호출 2) Exception : 프로그램 오류에 의한 인터럽트 Timer 프로세스가 할당한 시간만큼 CPU를 사용하면 인터럽트를 보내는 하드웨어 CPU CPU는 매번 PC의 주소 작업만 처리 mode bit에 따라 0이면 운영체제로 모든 명령어 처리, 1이면 사용자 프로그램으로 제한된 명령어 처리 동기식 입출력 (Synchron..

CS/운영체제 2022.03.27

[운영체제] KOCW 반효경 교수님 강의 - 3. System Structure & Program ExeCution 1

컴퓨터 하드웨어의 동작에 대한 챕터 컴퓨터 시스템 구조 컴퓨터 CPU 메모리에서 명령어를 하나씩 읽어서 실행하고 끝나면 인터럽트 확인 register : 메모리보다 더 빠른 작은 공간 mode bit : CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지 구분 [인터럽트 과정] Interrupt line CPU는 메모리에서 명령어 하나씩 실행하는 일만 반복 [1] 키보드에서 입력을 받고, 화면 출력, Disk에서 데이터 읽어오기 등 작업이 필요 [2] Disk에서 데이터가 필요하면 device controller에게 읽어오라고 일을 시킴 [3] device controller는 Disk에서 데이터를 읽어서 local buffer에 저장 [4] 그동안 빠른 CPU는 계속 작업을 진행 [5] I/O가 ..

CS/운영체제 2022.03.11