프로세스 관리는 OS의 역할 중 가장 중요한 부분입니다. OS는 메모리 공간과 자원을 프로세스에게 할당하고 할당한 것들을 다른 프로세스가 간섭하지 못하도록 보호하며, 프로세스마다 우선순위를 부여하고, 프로세스 동기화를 하는 등 프로세스의 전반적인 모든 것에 관여합니다. Process State 프로그램이 RAM으로 올라와 실행되고 종료되기까지, 프로세스는 5가지의 상태를 갖습니다. 상태를 포함한 프로세스에 대한 정보는 운영체제 내부의 PCB(Process Control Block)라는 자료구조에 담깁니다. New : SSD에 있던 프로그램이 RAM으로 적재되는 상태 Ready : 프로세스가 CPU의 서비스를 받길 기다리는 상태 Running : 프로세스가 CPU의 서비스를 받는 상태 Waiting : 프..
안녕하세요 Hani입니다. 지난 포스팅에선 프로세서의 연산을 방해하지 않기위해 예외상황이나 I/O 장치를 관리하는 인터럽트가 존재함을 알아봤습니다. 이번에는 시스템 콜 인터럽트라는 것을 알아볼 것입니다. System Call 시스템 콜이 무엇인지 설명하기에 앞서 우리는 OS 와 어플리케이션의 관계를 다시 상기해볼 필요가 있습니다. 어플리케이션은 사용자로 부터 받은 명령을 실행하기 위해 OS 에게 요청을 합니다. OS는 프로세스로부터 요청받은 자원 (메모리, CPU, I/O 장치)을 허가하고 할당합니다. 이런 요청을 받는 운영체제 서비스로는 프로세스 관리, 주기억장치 관리 등 중요한 서비스들이 존재합니다. 사소하지만 우클릭해서 파일을 하나 만드는 것도 OS 를 거쳐야 합니다. OS 의 허락없이 명령이 실행..
안녕하세요 Hani입니다. 지금까지의 운영체제가 HW, SW와 어떤 관계가 있는지 알아봤고, 컴퓨터 구조를 크게 프로세서와 메모리의 관계로 이해할 수 있었습니다. 그러나 컴퓨터는 프로세서나 메모리 말고도 마우스, 프린터 등 다양한 장치들이 존재합니다. 프로세서가 연산을 하면서 직접 입출력할 것이 있는지 점검한다면 실행 시간이 낭비될 것입니다. 프로세서는 비싼 연산 장치인 만큼 연산에 집중할 수 있도록 운영체제를 설계해야 합니다. Interrupt 프로세서가 연산을 하고 있는 도중 진행 중이던 작업을 놔두고 당장 해야 할 작업이 생겼음을 알려주는 것을 인터럽트라고 합니다. I/O 장치를 당장 사용할 일이 생겼음을 프로세서에게 알려주는 인터럽트를 하드웨어 인터럽트라고 합니다. 인터럽트에는 수를 0으로 나누거..
안녕하세요 Hani입니다. 저번 포스팅에서는 부팅을 통해 OS를 RAM에 적재시키는 과정을 알아봤습니다. 이번에는 운영체제의 역할과 커널에 대하여 알아보겠습니다. OS와 HW, SW간 관계 다음은 하드웨어와 운영체제, 그리고 소프트웨어 간의 관계를 알 수 있는 그림입니다. 컴퓨터 가장 내부에 하드웨어가 존재하고, 하드웨어를 제어하는 OS가 그 주위를 감싸고 있습니다. 이 중에서 OS의 초록색 겉껍질을 Shell이라 부르고, 연두색 알맹이를 Kernel이라고 부릅니다. 즉, OS는 Shell + Kernel 이라고 할 수 있습니다. 예를 들면 CUI 환경에서 명령어를 타이핑할 때, 명령을 해석하고 관리하는 프로그램을 Shell 이라고 합니다. 그러나 명령어를 잘 알고 있다고 해서 OS(Kernel + Sh..
운영체제(Operating System)는 컴퓨터를 편하게 쓸 수 있도록 HW/SW를 관리해주는 프로그램입니다. OS의 목적과 세부 기능을 알기 위해 부팅부터 알아보려 합니다. 컴퓨터 구조 컴퓨터는 어떤 프로그램을 실행하기 전에 메모리에 미리 실행하고자 하는 일련의 명령들을 기록을 해둡니다. 이 명령들을 Instruction이라 부르고, 하나의 프로그램은 Instruction의 집합으로 이루어져 있습니다.. 프로세서는 메모리에 있는 Instruction들을 하나씩 프로세서로 가져와서 실행시키길 반복합니다. 이제 PC를 한번 켜봅시다. 부팅 PC를 켜면 RAM에는 아무런 Instruction이 없습니다. 휘발성 메모리기 때문입니다. 프로그램은 비휘발성 저장 공간 안에 들어있고 우리가 필요로 하는 프로그램을..
- Total
- Today
- Yesterday
- mach-o
- 네트워크 플로우
- 강한 순환 참조
- WWDC16
- WWDC17
- 코딩대회
- CompositionalLayout
- observeOn
- CPU와 Memory
- Testable
- 포드 풀커슨 알고리즘
- WWDC19
- 벨만포드 시간복잡도
- rxswift
- 최단경로 문제
- HIG
- test coverage
- 부스트캠프 6기
- 최대 매칭
- 네트워크 유량
- MeTal
- 다익스트라 시간복잡도
- 컴퓨터 추상화
- 에드몬드 카프 알고리즘
- 벨만포드 알고리즘
- 최단경로문제
- State Restoration
- IOS
- WWDC21
- 최단경로 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |