본문 바로가기

linux9

14. CPU Scheduling CPU 스케줄링은 왜 생겼을까? 운영체제의 발전을 공부하면서 다중프로그래밍이 도입된 것을 알게됐다. 다중 프로그래밍은 I/O 처리로 인한 CPU Idle Time을 줄여서 CPU 활용률을 향상 시키기 위해서 도입 되었는데 이 때, 다중 처리를 하기 위한 기법이 CPU 스케줄링이다. 스레드까지 공부하면서 알게 된 내용은 CPU는 스레드를 스케줄링해야 한다는 것이다. 근데 어떤 스레드를 선택할 것인지 골라야한다. 위와 같은 정책을 가진 알고리즘을 크게 CPU 스케줄링 알고리즘이라고 하고 엄밀하게는 스레드 스케줄링이라고 한다. 다중 프로그래밍은 2가지 스케줄링을 통해 발생한다. 1. 작업 스케줄링(job scheduling) - 디스크 장치로부터 메모리에 올릴 작업을 선택하는 것이다. 프로세스가 시작하거나 종.. 2024. 4. 22.
9. 프로세스 계층 구조 프로세스는 부모 - 자식 관계이다. 윈도우에서는 프로세스는 모두 동등한 관계이지만, 다른 OS에서는 다르다. 최초에 실행되는 #0 프로세스가 조상 프로세스로 이후로 자식 프로세스들이 뻗어져 나가는 형태이다. 하나의 부모는 여럿의 자식을 가질 수 있는 형태이다. 이 말은, #0 프로세스를 제외한 나머지 모든 프로세스는 부모 프로세스를 가지고 있다는 의미이다. 리눅스의 경우 #0 - Idle Process, #1 - Init Process, #2 - kthreadd Process 로 조상 프로세스가 구성되어있다. 각 각, CPU가 놀지 않기 위한 용도, 사용자 프로세스의 조상 프로세스, 커널 프로세스의 조상 프로세스의 역할을 한다. Linux 환경에서 ps -eal, pstree 0 명령으로 직접 확인할 수.. 2024. 4. 21.
8. 프로세스 제어 블록 (PCB, Process Control Block) PCB란? 프로세스 제어 블록은 프로세스 정보를 담고 있는 하나의 단위이다. PCB 하나에는 프로세스 정보(PID, PPID, Process Status, ... )를 가지고 있다. 해당 내용은 외우고 있을 필요는 없다. 실제 시스템 프로그래밍을 하게 될 때, 이 정보를 컨트롤하게 된다. PCB가 왜 필요할까? 다중 프로그래밍 기법을 생각해보자. 중간에 인터럽트가 발생해서 CPU가 처리하고 있던 프로세스를 잠시 인터럽트 처리하고 다른 프로세스를 발생해야한다. 그 이유는 CPU Idle Time을 줄이기 위해서이다. 이 때, 다른 프로세스를 실행하고 interrupt가 종료되면 기존의 프로세스를 이어서 처리해야한다. 여기서 기존의 프로세스로 전환하는 과정을 컨텍스트 스위칭(Context Switching).. 2024. 4. 21.
6. 커널 (Kernal) 커널이란 무엇일까? 운영체제의 핵심 부분이다. 1. 운영체제란? 에서도 설명했지만 컴퓨터를 부팅하게 된다면 OS를 실행하기 위해 기본적인 실행코드들이 실행된다. 이 때, 커널 코드와 GUI, 작업 스케쥴러에 의한 최초 실행 프로그램들이 메모리에 적재된다. 그 중 우리는 운영체제의 모든 정보를 관리하고 있는 커널에 대해서만 생각해야한다. 커널에는 시스템 호출(System Call)과 인터럽트(Interrupt)라는 인터페이스가 제공되고 있다. 앞서, 설명한 내용이지만 시스템 호출은 응용 프로그램과 OS 간에 인터페이스이고 인터럽트는 HW와 OS 간에 인터페이스이다. 시스템 호출에서 제공하는 기능들은 open(), close(), fork()와 같이 ABI라고도 불리는 유명한 시스템 프로그래밍 기능들이다. .. 2024. 4. 21.
5. 운영체제의 역할 운영체제에 필요한 컴퓨터 시스템은 어떻게 구성되어 있을까? 운영체제의 역할에 대해 이해하려면 먼저 컴퓨터 시스템의 구조를 알아야한다. 우리는 1. 운영체제란? 에서 컴퓨터 시스템의 기본적인 구조를 확인했었다. 크게 응용 SW OS HW의 계층을 갖고 있는데 여기서 OS가 사용자(응용 SW)와 HW 간에 중계 역할(인터페이스)을 수행하고 있기 때문이다. 그래서 OS는 자원에 대해 배타적 독점을 하고 있고 사용자나 SW는 OS를 통해서만 HW에 접근할 수 있다는 특징이 있다. 사실 이 내용은 OS의 선수과목으로 언급되는 컴퓨터 구조나 시스템 프로그래밍에서 공부해야 할 내용인데 이미 알더라도 복습하는 내용으로 넘어가려고 한다. CPU(Central Processing Unit)는 중앙처리장치로 메모리에 적재된.. 2024. 4. 21.
4. 시분할 다중프로그래밍(Time Sharing Multi-Programming) OS 시분할 다중 프로그래밍의 출현 배경? 시분할 다중 프로그래밍은 다중 프로그래밍 기법과 거의 동시에 연구가 시작되었다. 다중 프로그래밍과 마찬가지로 배치 처리에 대한 문제점을 개선하고자 연구되었으나 다중 프로그래밍 방식의 문제점도 발견하고 연구하게 되었다. 발견한 문제점은 비대화식 처리 방식과 그로 인한 느린 응답, 오랜 대기 시간의 문제이다. 대화식 시스템 시분할 운영체제는 사용자에게 빠른 응답을 제공하기 위해 대화식 시스템을 제안했다. 키보드와 모니터를 통해 메인 컴퓨터에 모뎀 간 연결 후 시간에 따른 처리를 하는 방법이다. 각 사용자는 메인 PC에 여러 키보드와 여러 터미널을 통해 응답 받을 수 있다. 핵심은 사용자의 입력 속도보다 컴퓨터의 연산 속도가 빠르므로 사용자 입장에서는 응답이 느리다고 생각.. 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.
1. 운영체제(OS, Operating System)란? 운영체제는 사용자와 H/W 사이에서 중계 역할을 하는 녀석이다. 아래 그림을 통해 어떻게 중계하는지 확인할 수 있다. 실제 응용 소프트웨어를 사용하기 위해 키보드, 마우스 입력을 모두 처리하고 모니터의 출력을 처리하는 작업은 OS가 다 수행하고있다. 그럼 여기서 의문점이 발생할 것이다. OS는 하드웨어인가? 소프트웨어인가? 어느 위치에서 동작하는가? OS는 하드웨어의 입/출력을 관리하지만 정확히 소프트웨어에 해당한다. 소프트웨어 중에서도 System Software에 해당된다. 그럼 또, System Software가 무엇이냐고 묻게 될 것이다. OS에서 System Software에 대해서는 자세하게 알 필요가 없다. 왜냐하면 시스템 프로그래밍이나 리눅스 시스템 프로그래밍과 같은 System Softw.. 2024. 4. 20.