일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Stack
- 개발
- vector
- 그래프
- 문제풀이
- cs
- 오퍼레이팅시스템
- c++
- 브루트포스
- 너비우선탐색
- bfs
- Operating System
- 정석학술정보관
- 구현
- 코딩
- 스택
- DP
- coding
- 오에스
- 정석
- 백준
- 컴공
- 컴퓨터공학과
- Computer science
- OS
- 자료구조
- 코테
- 알고리즘
- 컴공과
- 북리뷰
- Today
- Total
목록컴퓨터공학과 (29)
Little Jay

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..

어느덧 마지막 파트에 다다랐다. Sys Level I/O를 다루기만 하면 시스템프로그래밍이라는 과목을 한번 다 돌아보게 되는 것이다. 이제는 UNIX I/O가 어떻게 작동하는지 알아보자. UNIX I/O Overview 파일은 Byte의 Sequence이다. 앞서서 배열, 구조체 등을 배울 때에도 잠깐 언급을 했었지만, 파일은 결국 Byte가 선형 배열로 놓여있는 것이다. 이를 Linear Array of Bytes라고 한다. 또한 모든 I/O Device는 파일로 편현이 된다. 예를 들어서 /dev/tty 라고 하면 터미널에 접근할 수 있게 된다. 그리고 각각의 파일은 시스템 내에서 수행하는 타입이 있다. Regular File : 임의의 데이터를 담고 있다. Directory:파일과 관련된 그룹의 I..

Wait 앞서서 Parent Process는 Child Process를 "Reap" 한다고 언급했다. 이는 Parent Process에서 wait 혹은 waitpid 함수 호출을 통해서 진행이된다. int wait (int *status); 위에 있는 것이 wait 함수의 원형인데, 말 그대로 자식 Process의 종료 상태를 얻어내는 것을 목표로한다. 다시말해 Child Process가 끝날때까지 current process를 progress시키지 않고 suspend한다. 이 함수의 return 값은 끝나기를 기대하는 Child Process의 PID 번호이다. 그것이 가리키는 정수는 자식 프로세스가 종료된 이유와 종료 상태를 나타내는 값으로 설정이 된다. 이를 알아보기 위해서는 wait.h 파일에 들..

Termination Process는 세 가지 이유로 종료가 된다. 먼저 main 함수의 routine에 의해 자발적으로 종료가 되는 경우, exit함수로 자발적인 종료를 호출하는 경우, 마지막으로 종료를 수행하는 signal을 받을때이다. 다들 알고있겠지만 exit함수에 대한 간단한 소개를 하고 넘어가자면, exit함수는 말그대로 process를 terminate시킨다. 이 함수에는 번호가 들어가는데, 그 범위는 0~255까지 들어갈 수 있으며 0은 정상종료의 의미, 0이 아닌 경우에는 error상황이다. C의 stdlib.h 헤더파일에는 void atexit(void *(func) (void)); 가 들어가있다. 자세한 설명은 아래 링크의 블로그를 참조하면 되겠다. 이 함수는 exit할 때 다른 함수..

Status Register CPU에는 Status Register, PSW라는 아주 작은 레지스터를 지니고 있다. 이는 CPU의 current status를 저장하기 위한 레지스터이다. CPU는 이 레지스터를 통해 코드의 flow를 Control하게 된다. Status Register는 인텔 x86 아키텍쳐에서는 Condition Code를 저장한다고 한다. Condition Code는 Single Bit으로서 이를 통해 flag를 저장한다. 이 Flags들은 operation의 결과에 따라 set된다. 일반적으로 많이 알려진 Condition Code에는 CF Carry Flag ZF Zero Flag SF Sign Flag OF Overflow Flag 등이 존재한다. 앞선 포스팅에 나와있는 레지스..