0. 운영 체제란?
운영 체제 또는 오퍼레이팅 시스템(Operating System, 약칭:OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다.
또한 입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 한다.[1][2] 그러나 응용 프로그램 코드는 일반적으로 하드웨어에서 직접 실행된다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있다. 잘 알려진 현대의 PC 운영 체제에는 마이크로소프트 윈도우, 맥 OS X, 리눅스가 있다.[3]
운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 준다. 더불어, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.
1. 개요
1. 운영체제의 정의와 필요성
2. OS의 구조
2. 운영체제 구조 (1)
1. 컴퓨터의 기원과 발전
2. Batch system(Automatic job sequence, Spooling)
3. Multiprogramming
4. Timesharing
5. Multitasking
3. 운영체제 구조 (2)
1. OS설계
2. Layering
3. Module
4. 실행 모드
4-1. Kernel mode
4-2. User mode
5. Kernel design
5-1. Monolithic kernel
5-2. Micro kernel
5-3. Hypervisor
4. Process
1. Process의 생성
1-1. Compliler [Source code --(Assembler)--(Compiler)--> Object file]
1-2. Linker [Object file + Library --(Linker)--> Executable]
1-3. Loader[Executable --(Loader)--> Memory]
1-4. Runtime system?
2. 프로세스 관리
3. Context switching
4. 프로세스 생성과 종료
https://do-my-best.tistory.com/entry/%EC%9A%B4%EC%98%81-%EC%B2%B4%EC%A0%9C-Operating-System-Process
5. Computer Architecture
1. Computer Architecture
2. Basic HW Mechanisms - Event handling mechanism
3. I/O 처리 기법
3-1. Pooling (Programmed I/O)
3-2. Direct Memory Access(DMA)
4. I/O Device access
5-A. 과제 1 : Kernel System Call 이해와 구현
6. CPU Scheduling
1. 스캐줄링의 개념
2. 스케줄링의 메카니즘
3. 스케줄링 알고리즘
3-1. First-Come, First-Served Scheduling
3-2. Shortest-Job-First Scheduling
3-3. Priority Scheduling
3-4. Round-Robin Scheduling
3-5. Multilevel Queue Scheduling
3-6. Multilevel Feedback Queue Scheduling
4. Mutliple Processor Scheduling
6-A. 과제 2 : Task Scheduler에서 Priority 조정을 위한 System Call 구현
7. IPC
1. IPC의 정의 및 필요성
2. IPC의 두가지 모델 (Shared memory, Message passing)과 구현
2-1. 공유 메모리 방식 (Shared Memory)
2-2. 메시지 교환 방식 (Mesage Passing)
3. IPC 구현
3-1. Message Passing - Pipe
3-2. Message Passing - Signal
3-3. Message Passing - Message queue
3-4. Message Passing - Socket
3-5. Shared Memory
https://do-my-best.tistory.com/entry/%EC%9A%B4%EC%98%81-%EC%B2%B4%EC%A0%9C-Operating-System-IPC
8. Thread
1. Thread의 정의
2. Multi-Threaded Program
3. Multicore Programming
4. User and Kernel thread
4-1. User thread
4-2. Kernel thread
5. Mapping of User & Kernel thread
5-1. Many to One
5-2. One-to-One
5-3. Many-to-Many
6. Thread issue
6-1. Thread creation
6-2. Thread cancellation
6-3. Thread pools
6-4. Thread간 IPC
6-5. Thread creation
https://do-my-best.tistory.com/entry/%EC%9A%B4%EC%98%81-%EC%B2%B4%EC%A0%9C-Operating-System-Thread
9. 동기화 (1)
1. Data Consistency
2. Critical section 해결 알고리즘 (SW)
2-1. 하나의 shared variable
2-2. 두개의 shared variable
3.3 Peterson solution (세개의 shared variable)
3. Critical section 해결 알고리즘 (HW)
3-1. Test and set
3-2. Swap
4. Semaphore
5. Semaphore의 문제
6. Monitor
10. 동기화 (2)
1. Bounded-buffer problem(Consumer produce problem)
2. Readers-Writers Problem
2-1. Readers-Writers Problem without Writer Starvation
3. Dining-Philosophers Problem
3-1. Dining-Philosophers Problem : Wrong Solution
3-2. Dining-Philosophers Problem : Possible Solutions
3-3. Dining-Philosophers Problem : Best Solution
4. Concurrency 유지, Race condition 방지, Process간의 협업을 위한 체크 요소
11. Memory Management (1)
1. 주소
2. 단계별 주소 관리
2-1. 초창기
2-2 단계 별 메모리 결정 방법
3. CPU에서 사용하는 주소에 따른 변환 방법
3-1. CPU에서 Physical relative address를 사용
3-2. CPU에서 Virtual address를 사용
4. Virtual memory
4-2. Paging
5. 여러 Paging 기법
5-1. 초기
5-2. Translation Look-aside Buffer (TLB)
5-3. Multilevel Page Table
5-4. Inverted Page Table
5-5. Demand Paging
12. Memory Management (2)
1. Page Replacement
2. Page replacement algorihtm
2-1. Optimal Algorithm
2-2. FIFO Algorithm
2-3. SCR(Second Chance Replacement) Algorithm
2-4. Clock Algorithm
2-5. LFU(Least Frequently Used) Algorithm
2-6. NRU(Not Recently Used) Algorithm
2-7. LRU(Least Recently Used) Algorithm
2-8. Swapping
3. Countigous Memory Allocation
13. File system
1. Page Replacement
2. Page replacement algorihtm
2-1. Optimal Algorithm
2-2. FIFO Algorithm
2-3. SCR(Second Chance Replacement) Algorithm
2-4. Clock Algorithm
2-5. LFU(Least Frequently Used) Algorithm
2-6. NRU(Not Recently Used) Algorithm
2-7. LRU(Least Recently Used) Algorithm
2-8. Swapping
3. Countigous Memory Allocation
14. 질문과 답변
VM공유하니까 Stack도 공유하는게 아닌가? : ㄴㄴ -> 아니다 이건 fork할때 달라짐 stack만 다르다. (context 등등을 위해서, 그리고 switch할 때 stack이 전환된다)
왜 Thread 만들 때 data section에서 COW가 안일어나고 공유되는거지? : ㅇㅇ -> 안일어남, process fork는 exec라는 함수가 일어나서 COW가 일어나는거지, do_fork자체는 그냥 메모리 복사 (이걸 사용한다는것)
Scalability는 core에서 동시에 실행한다는 것인가? -> multicore programming
최대 4명의 철학자만 앉게 하는게 어떻게 문제를 해결하는가?
CPU당 프로세스를 관리하는 Queue가 다양함 -> 알고리즘별로 나뉨, 근데 이 Queue는 필요에 따라 생성됨
-> 그리고 그 Queue에 대한 Priority나 속성들을 통해 OS가 Queue단위로 관리
-> 그리고 그 Queue안에서 그 알고리즘 단위로 스케줄링하는것
'학교 공부 > OS' 카테고리의 다른 글
운영 체제 (Operating System) - File system (0) | 2021.11.30 |
---|---|
운영 체제 (Operating System) - Memory Management (2) (0) | 2021.11.30 |
운영 체제 (Operating System) - 동기화 (2) (0) | 2021.11.30 |
운영 체제 (Operating System) - 9. 동기화 (1) (0) | 2021.11.29 |
운영 체제 (Operating System) - Thread (0) | 2021.11.29 |