본문 바로가기

명품 운영체제10

15. CPU Scheduling Algorithm FCFS (First Come First Served) 스케쥴링 선입선처리 알고리즘 스케줄링 파라미터 : 스레드별 도착 시간 비선점 스케쥴링 스레드 우선순위 없음 기아 없음, 스레드 오류로 무한 루프가 발생한다면 기아 발생 처리율이 낮음. 호위 효과 (convoy effcet) 발, 긴스레드가 오래 CPU를 차지하면 늦게 들어온 스레드는 오래 대기 총 처리 시간 11s, 대기시간 11s, 평균 대기시간 11 / 4 = 2.75ms SJF (Shortest Job First) 최단 작업 우선 스케줄링 스케줄링 파라미터 : 스레드 별 예상 실행 시간 비선점 스케줄링 스레드 우선순위 : 짧은 스레드 실행 시간 기아 발생가능, 지속적으로 짧은 스레드가 도착시 긴 스레드의 실행을 예측 불가 짧은 스레드가 먼저 실.. 2024. 4. 22.
14. CPU Scheduling CPU 스케줄링은 왜 생겼을까? 운영체제의 발전을 공부하면서 다중프로그래밍이 도입된 것을 알게됐다. 다중 프로그래밍은 I/O 처리로 인한 CPU Idle Time을 줄여서 CPU 활용률을 향상 시키기 위해서 도입 되었는데 이 때, 다중 처리를 하기 위한 기법이 CPU 스케줄링이다. 스레드까지 공부하면서 알게 된 내용은 CPU는 스레드를 스케줄링해야 한다는 것이다. 근데 어떤 스레드를 선택할 것인지 골라야한다. 위와 같은 정책을 가진 알고리즘을 크게 CPU 스케줄링 알고리즘이라고 하고 엄밀하게는 스레드 스케줄링이라고 한다. 다중 프로그래밍은 2가지 스케줄링을 통해 발생한다. 1. 작업 스케줄링(job scheduling) - 디스크 장치로부터 메모리에 올릴 작업을 선택하는 것이다. 프로세스가 시작하거나 종.. 2024. 4. 22.
13. 멀티스레드 구현 멀티 스레드 구현 ? 개발자로 거듭나려면 꼭 필요한 개념이다. 우리도 코드를 작성하면서 다양한 사용자에 대해 작업을 해야할 것이다. 그 때, 스레드를 사용한다면 우리가 만든 스레드가 시스템에서 스케줄 될 수 있도록 하는 방법이다. 크게 N:1 매핑, 1:1 매핑, N:M 매핑이 있다. X : Y 꼴로, X개의 사용자 레벨 스레드를 Y개의 커널 레벨 스레드로 매핑한다는 내용인데 이 외에도 1:N 매핑도 있다. 하지만 중요한 N:1, 1:1 만 작성하도록 하겠다 .N(User):1(Kernel) 매핑 말 그대로 N개의 사용자 스레드가 1개의 커널 스레드로 매핑하는 개념이다. 운영체제(커널 입장)는 모든 프로세스를 Main 스레드라는 단일 프로세스로 처리한다. 이 말은 커널 영역에 저장되는 커널 레벨 스레드의.. 2024. 4. 22.
11. 스레드 주소 공간과 컨텍스트 스레드의 주소공간은 생각보다 간단하다. 프로세스 주소공간을 그대로 나누어가지고 있다. 기존 프로세스의 코드, 데이터, 힙, 스택 영역은 공유 영역이되고 개별 스레드마다 코드 영역, 데이터 영역, 스택 영역, 커널 영역으로 나누어 사용되고 있다. ※ 프로세스와 스레드는 유사하다는 것을 알 수 있다. 스레드 생명 주기 프로세스에서 스레드로 바뀌었으니 유사한 것은 당연하다. 그럼 프로세스에서 있는 개념들은 웬만하면 스레드에도 적용된다는 것을 알 것이다. 스레드 또한 생명주기가 있다. 프로세스는 NEW, Ready, Running, Blocked, Zombie, Out 상태가 있었다. 스레드는 Ready, Running, Blocked, Terminated 상태가 있다. 각 상태에 대한 기본적이 내용은 프로세스.. 2024. 4. 22.
10. 스레드 (Thread) 쓰레드는 왜 사용할까? 스레드를 사용하게 된 배경도 있을 것이다. 이유는 프로세스의 문제점 때문이다. 프로세스에서 컨텍스트 스위칭이 발생할 경우, 프로세스 생성에 너무 많은 오버헤드가 발생한다 프로세스 생성시 PCB 생성, 메모리 할당, 부모 프로세스 내용 복사 등 많은 작업을 해야한다. 그 외에도 뒤에 나올 페이지 테이블 참조, 캐시 업데이트 등 많은 부분에서 문제점이 발생 프로세스 간의 통신이 어렵다. 프로세스는 독립적인 공간을 갖고 있으므로 서로 침범할 수 없어서 통신이 힘들다는 점. 프로세스 간 통신을 위해 메모리 맵, 파이프, 소켓 등 다양한 방식을 사용했다. 프로세스는 입력을 독점하는 ForeGorund Process와 각종 처리를 하는 BackGround Process가 존재한다. 그 외에도.. 2024. 4. 21.
7. 프로세스 (Process) 본격적인 운영체제 개념 이전까지는 운영체제를 알기 위한 전반적인 흐름이나 기본적인 지식을 설명하는 내용이었다. 운영체제의 시작을 알리는 프로세스란 도대체 무엇일까? 우리는 Chrome, Kakao Talk와 같은 Application을 프로그램이라고 부른다. 이 녀석들은 HDD나 SSD에 저장되어있다. 바로가기 icon에 대해 '우클릭 - 속성 - 파일위치열기'를 눌러보면 정확한 프로그램을 찾을 수 있다. windows에서는 Chrome.exe와 같은 *.exe 확장자가 붙는데 이것을 프로그램이라고 한다. 앞에서 프로세스도 *.exe라고 다룬적이 있다. 맞지만 조금 다르다. exe 파일에는 코드, 데이터, 스택, 힙 공간이 목적 코드로 작성되어있는데 이 실행파일을 실행했을 경우 메모리에 적재되는데 실행 .. 2024. 4. 21.
5. 운영체제의 역할 운영체제에 필요한 컴퓨터 시스템은 어떻게 구성되어 있을까? 운영체제의 역할에 대해 이해하려면 먼저 컴퓨터 시스템의 구조를 알아야한다. 우리는 1. 운영체제란? 에서 컴퓨터 시스템의 기본적인 구조를 확인했었다. 크게 응용 SW OS HW의 계층을 갖고 있는데 여기서 OS가 사용자(응용 SW)와 HW 간에 중계 역할(인터페이스)을 수행하고 있기 때문이다. 그래서 OS는 자원에 대해 배타적 독점을 하고 있고 사용자나 SW는 OS를 통해서만 HW에 접근할 수 있다는 특징이 있다. 사실 이 내용은 OS의 선수과목으로 언급되는 컴퓨터 구조나 시스템 프로그래밍에서 공부해야 할 내용인데 이미 알더라도 복습하는 내용으로 넘어가려고 한다. CPU(Central Processing Unit)는 중앙처리장치로 메모리에 적재된.. 2024. 4. 21.
3. 다중 프로그래밍 (Multi-Processing) OS 다중 프로그래밍 기법이 출현한 배경을 생각해보자. 이전, 배치 처리에서 어떤 문제로 인해 다중프로그래밍 방식의 아이디어가 제안 되었을 것이다. 배치 처리는 일괄적으로 처리할 수 있게 되었지만 CPU 작업 중 특정 명령 코드에서 I/O 작업을 요청한다. 그럼 컴퓨터는 CPU 작업을 하다가 I/O 작업을 하게 되는데 이 작업이 반복되는 현상이 발생한 것이다. 실질적으로 컴퓨터에서 처리를 하는 HW는 CPU인데 컴퓨터가 I/O 작업을 하면서 CPU는 대기하는 현상이 발생한다. 이것을 CPU idle time 이라고 한다. CPU IDLE Time을 줄이면 CPU 활용률(처리율)이 증가하게 된다. 그래서 다중 프로그래밍 기법이 출현한 것이다. 다중 프로그래밍 기법은 여러 프로그램을 메모리가 수용할만큼 메모리에 .. 2024. 4. 21.
2. 운영체제의 발전 운영체제가 발전한 과정 운영체제는 크게 고정 프로그래밍 방식, 내장 프로그래밍 방식, 로더 프로그램, 원시 운영체제, 최초의 운영체제(배치 운영체제), 다중 프로그래밍 운영체제, 시분할 다중프로그래밍, 개인용 운영체제로 나뉜다. 그 외, 임베디드 운영체제, 모바일 운영체제, 실시간 운영체제, 서버 운영체제 등이 있다. 고정 프로그래밍 방식 (fixed program computer) 1940년대 컴퓨터로 OS에 대한 개념이 없을 때이다. 이 때는 HW만 존재했고 키보드로 명령을 하는 개념이 없을 때이다. 그럼 어떻게 프로그래밍을 했을까? 종이에 스위치와 전선 연결도를 작성하며 배선판에 전선을 연결하는 방식을 사용했다. 하나의 계산을 위해 한 번의 입력(전선 연결)이 오래 걸리고 연산에도 오래 걸려서 고정.. 2024. 4. 21.