일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 오퍼레이팅시스템
- 코테
- coding
- cs
- Operating System
- 알고리즘
- OS
- 코딩
- 정석학술정보관
- 개발
- bfs
- 자료구조
- DP
- vector
- 컴공
- 컴퓨터공학과
- 브루트포스
- 너비우선탐색
- 백준
- Stack
- 정석
- 구현
- 컴공과
- 스택
- 오에스
- 그래프
- c++
- 북리뷰
- 문제풀이
- Computer science
- Today
- Total
목록Univ/Operating System(OS) (31)
Little Jay

Intro 앞서서 Process Control Information에 Process의 State가 들어간다고 언급했다. 이 State는 Process가 어떤 상태에 있는지 알려주는 것이다. 예를 들어 Processor가 1개인데 처리해야 하는 Process가 다수라면, Process는 Uni-Programming을 하고 있다면 하나의 Process만 처리할 수 있기에 나머지 Process는 대기하거나 Block되어야 한다. 이 State를 정의해주는 것이 Process State Model이다. 우리는 가장 간단한 Two State Process Model부터 Five, Seven까지 순차적으로 알아볼 것이다. Two State Process Model 가장 단순한 Processing Model이다. 이..

Process Description Process는 세 가지의 Context로 이해할 수 있다. 먼저 User Level Context가 있다. 이는 User Program의 기본적인 요소들(text, data 등)을 담고 있다. 또한 User Level에서는 Process가 실행될 때 Flow 및 복귀주소를 파악하기 위해 Stack 또한 돌아가게 된다. 따라서 User Level Context에서는 Program이 돌아가는 데에 필요한 Data, Memory의 Context라고 이해하면 될 것이다. User Data, User Code, User Stack 등이 이에 해당된다. 또한 우리는 이제 System Level Context에서 Process를 어떻게 정의해야 할 것인지 봐야한다. System ..

Program vs Process Program과 Process를 섞어서 많이 혼용한다. 그러나 두 용어는 본질적인 차이가 존재한다. 먼저 Program은 Passive Entity로서 디스크에 저장된 Binary Sequence이다. .data나 .text(code)들이 이에 해당한다. 반면 Process는 Active Entity로서 메모리에 올라간 Execution Sequence이다. Program은 따라서 메모리에 load 될 때 Process가 되는 것이다. 또한 하나의 프로그램이 여러 개의 프로세스로 나누어져 Multi Process가 될 수 있다. 하나의 프로그램이 여러 번 수행되는 것이 이에 해당한다. 따라서 다시 간략하게 두 용어의 차이는 실행 가능하거나, 실행 중, 혹은 처리기에 할당..

System Calls System Calls(이하 Syscall)이라고 하는 것은 앞에서도 계속 언급해왔다. 정말 이를 간단하게 말하자면 함수의 호출이다. 그러나 그 의미를 조금 더 자세히 살펴보자면 Process가 특정한 Kernel Service를 요청하는 것이다. 이를 통해 Application Level에서 OS와 communicate할 수 있는 것이다. Sys Call의 목적은 결국 System Resource를 보호하고자 사용하는 것이다. OS 입장에서는 Kernel Level에서 동작하는 코드들은 Trusted, 즉 신뢰할 수 있는 것으로 여겨진다. 반면에 User Program의 Level의 코드들은 OS입장에서 Untrusted하다. 이를 Reliability 측면에서 본다면 User ..

Kernel 커널이라는 것은 OS의 부분으로서 항상 메모리에 상주하고 있는 것이다. 대부분이 C 코드로 적혀져 있으며, Assebly Language로 적혀져 있는 것이 많다. 또한 커널 자체는 수많은 함수들로 구성이 되어있다. 이전에 Linux 코드로 Interrupt Handling을 어떻게 처리하였는지 살펴보았는데, Process Management, Synchronization, CPU Scheduling, Memory Management, Device Management, Interrput Handling 등 컴퓨터가 동작하기 위한 주요 메커니즘을 함수로서 제공을 한다. 이러한 것들이 System Call 이라고 한다. Utility 커널을 제외한 모든 것을 의미한다. 이를 세분화 하자면 Sys..

Evolution of OS 개괄적으로 정리해보자면 1940년대 중반에서는 컴퓨터라고 하는 것은 국가적인 재산이었다. 에니악의 크기만 봐도 개인이 소유할 수 없는 국가적인 재산이었다. 하지만 이용율은 매우 낮았던 시기이다. 그렇기 때문에 점차 이용률과 Utilization을 높이는 것이 목표가 되면서 진화했다. 그러나 현대에 와서는 HW보다는 인간의 몸값이 더 비싼 수준이 되었다. 따라서 평균대기시간과 turn-around time을 줄이는 것이 목표가 되었고 인적 자원을 idle하지 않게 interactive한 시스템으로 진화해왔다. 결과적으로 HW와 OS는 서로 영향을 주면서 발전해왔다고 할 수 있다. Serial Processing 이 시대는 1940년대 중반수터 1950년대 중반까지의 시대이다. ..
Main Objective of OS Operating System의 주요 목적을 이야기 하라고 하면 세 가지의 측면을 이야기 해야한다. Convenience Efficiency Ability to Evolve OS는 사용자들로 하여금 컴퓨터를 더 쉽게 사용할 수 있고, OS는 컴퓨터 시스템의 자원(Resources)를 효과적으로 관리하며, 유연한 설계로 변화가 있어도 끊임없이 서비스를 제공할 수 있어야한다. Role of OS OS의 목적을 살펴보았으니 이제 실제 OS가 어떤 일을 하는지 알아보자. OS의 역할은 크게 두 가지로 나뉜다. 첫 번째는 중재자(Mediator)로서의 역할이다. 이는 다양한 Interface를 제공하는 동시에 프로그램을 실행, 개발, I/O 장치 접근, 파일 접근 제어, 시스..

I/O Controller I/O Device와 Processor가 통신하기 위해서는 특정한 Interface가 필요하다. 이 Interface는 I/O Controller이며, CPU와 I/O Controller는 System Bus를 통해서 Data를 주고 받는다. System Bus라고 하면 Data전송을 위한 HW Line이며 이는 중요한 시스템 자원이다. 이 System Bus는 최소 3개로 이루어져 있다. Address Bus : Src, Dst를 지정해주는 Bus이다 Data Bus : 실제 Data를 전송해주는 Bus Control Bus : 어떤 Operation을 수행해야하는지 알려주는 Bus이다 따라서 I/O Controller들은 이 Bus를 통해 CPU 대신해서 I/O 들을 Con..

Memory Hierarchy 메모리는 CPU의 작업공간이다. Processor가 성능을 최대한으로 내려면 Memory의 속도 역시 중요하다. Memory는 장치의 특성에 따라 피라미드 형태로 계층구조를 그릴 수 있다. 위의 그림을 보면 레지스터, SRAM, DRAM, DISK, Secondary Memory의 순으로 피라미드 형태로 나눌 수 있는 모습을 볼 수 있다. 피라미드가 점점 내려가면서 가격적인 측면과 용량적인 측면에서 이득을 많이 볼 수 있지만, 반면 속도가 점점 내려가고 이에 따른 대역폭도 내려간다. 우리는 이러한 관계를 메모리 계층구조라고 부른다. 그러나 우리는 ideal하게 빠른 속도의 High Level Memory와 Low Level Memory의 가격과 용량을 얻고 싶다. 따라서 우..

Interrupt Mechanism Interrupt는 Processor Utilization은 높이는 기법이다. Interrupt 자체는 시스템 프로그래밍 파트에서도 설명을 했었는데 이제는 이 Interrupt가 어떻게 동작하는지 그 원리와 내부 구조, 이유에 대해 OS의 관점에서 정리하겠다. Interrupt를 사용하는 이유는 대부분의 I/O Device가 Processor보다 느리기 때문이다. 만약 Processor가 I/O Device와 바로 상호작용하기 위해서는 Processor는 Device의 작업이 끝날 때까지 기다려야 한다. 이는 Processor라는 자원을 놀리고 있는 것이고 이는 Resource에 대한 자원 낭비이다. 예를 들어서 Read Operation이 일어난다면 Processor..