CS 37

7. 스케줄링(Scheduling)

스케줄링에 대한 내용에 들어가기 앞서 필요한 내용들을 쭉 정리해보겠습니다. 프로세스들이 life cycle 동안 state transition을 진행하는 과정에서 발생하는 이벤트가 스케줄링입니다. 실행 중인 프로세스가 중단되고 다른 프로세스로 변경될려면 CPU를 할당받아 사용하던 프로세스는 안전한 곳으로 대피시키는 교체 작업을 했었는데 이것이 context switching 이였습니다. context switching은 dispatcher라는 모듈이 진행해줍니다. OS 스케줄러는 dispatcher와 밀접한 관계를 가지며, 위에는 또다른 scheduling policy로 구성된 2-level architecture 형태를 띕니다. 스케줄러는 여러 프로세스들에게 공평하면서 효율적이게 CPU를 공유시킬 수 ..

CS/Operating System 2023.10.31

6. 리소스(Resource)

리소스(Resource)란? 프로세스들이 사용하거나 조작하는 대상으로 하드웨어 자원이나 메인메모리에 들어가있는 data structure를 의미하기도 합니다. CPU time이나 storage disk space, I/O device 등도 리소스로 볼 수 있습니다. 리소스는 Preemptible resource와 Non-Preemptible resource로 나뉩니다. 이전에 스케줄링에서 개념을 배운적이 있는데 Preemptible scheduling은 프로세스가 CPU 자원을 가지고 있을 때 OS가 언제든지 뺏을 수 있는 스케줄링이고 Non-Preemptible scheduling은 프로세스가 스스로 수행을 완료해서 CPU를 내놓았을 때만 다른 프로세스가 CPU를 가질 수 있는 스케줄링었습니다. Non..

CS/Operating System 2023.10.24

5. 멀티 쓰레딩(Multi Threading)

굉장히 큰 matrix를 multiplication 한다면 각각의 column 벡터와 row 벡터의 연산은 독립적 입니다. 이 경우 병렬로 연산을 진행하면 좋지만 지금까지 배운 내용으로 병렬처리를 진행하려면 프로세스 단위로 병렬처리를 진행해야 합니다. 프로세스는 stack segment, heap segment, data segment, code segment 등 여러 정보를 담고 있는 무거운 존재이기 때문에 병렬처리를 위해서 대량으로 생성하게 된다면 메모리 오버헤드가 굉장히 커지게 됩니다. 과거에도 과학적 계산들을 위해서 많은 컴퓨팅 파워가 필요했습니다. 그래서 병렬처리를 진행하기 위해서 하나의 프로세스를 컨텍스트와 쓰레드로 나누어 문제를 해결했습니다. 컨택스트 같은 경우에는 메모리 컨텍스트, 하드웨어..

CS/Operating System 2023.10.17

4. Process (creation, termination, context switching)

OS의 가장 큰 특징은 multitasking을 지원하는 것입니다. 이를 위해 OS는 하드웨어 자원들을 여러 작업들에 잘 배분을 해야 하며 sheduling과 synchronization이 가능해야 합니다. 이런 OS 내부에는 다섯 개의 서브시스템이 존재합니다. Process management Address translation와 Memory management I/O Device management File subsystem Network subsystem 먼저 Process management에 대해서 알아보겠습니다. 프로세스는 OS에서 가장 중요한 개념으로 실행 중인 프로그램을 말합니다. 그래서 program in execution이라고 부르거나 또는 execution stream 이라고도 합니다..

CS/Operating System 2023.10.12

3. 스택(Stack)

운영체제에서 작성된 유저 프로그램이 수행되기 위해서는 반드시 스택이 필요합니다. 스택의 여러 동작을 조절하는 것이 OS를 구현하는 중요한 테크닉이 됩니다. 프로그램 수행에 있어 스택이 필요한 이유는 현대적인 의미의 프로그래밍 언어 모델 때문입니다. variable에 관련이 있는데 우리가 C 프로그램을 할 때 변수는 크게 2가지로 나누어집니다. global variable과 local variable 이렇게 두 변수로 나뉘는데 이 두 변수는 어떤 차이를 가질까요? 공간적인 측면과 시간적인 측면에서 차이점을 가지게 됩니다. 공간적인 측면에서는 프로그램의 어떤 영역에서 변수에 접근할 수 있는지입니다. local variable의 경우 함수 block 내부에서만 access 할 수 있으며 global varia..

CS/Operating System 2023.10.01

2. System bus, Duel mode

우리가 OS를 공부하기 이전에 꼭 알아야 하는 하드웨어들에 대해 알아보겠습니다. Computer System Architecture Interrupt Mechanism Hardware Protection Computer System Archtecture 컴퓨터에서 온갖 연산과 제어동작을 실행시켜 주는 부분으로 CPU가 존재합니다. 컴퓨터의 메모리에는 프로그램을 수행할 때 필요한 instruction들이 저장되어 있습니다. (instruciton의 sequence가 코드입니다.) input과 output 디바이스도 컴퓨터 시스템에서 빼놓을 수 없는 부분입니다. 위에서 언급한 CPU, 메모리, I/O device는 컴퓨터의 핵심적인 3가지의 Component입니다. 이 3가지 요소들이 따로 존재하면 컴퓨터로..

CS/Operating System 2023.09.30

1. OS의 발전 과정

[이 카테고리의 글들은 홍성수 교수님의 운영체제의 기초 강의를 듣고 작성했습니다.] OS 분야의 진화는 크게 3단계로 나눌 수 있습니다. early ’50s – mid ‘60s: OS가 사용되지 않았지만 사람들이 필요성을 느낀 시기입니다. mid ’60s – mid ‘90s: 현재 사용되는 Modern OS로 넘어가는 시점입니다. 가장 OS 연구가 활발했습니다. mid ‘90s – present Phase 1 첫 번째 시기에는 펜실베니아 대학교에서 ENIAC이 발명되었습니다. 이때 CPU를 구성하기 위해서 진공관이라는 굉장히 오래된 Electronic device를 사용했습니다. ENIAC은 굉장히 많은 전력을 소모했기 때문에 사람들은 컴퓨터 시스템을 운용할 때 가장 중요하게 생각했던 것이 시스템의 ut..

CS/Operating System 2023.09.23
반응형