이 글에서는 각기 질주하려고 하는 컴퓨터 부품(정확하게는 자원)들이 적절하게 쓰이기 위한 제어와 추상화에 대해 다뤄본다. CS APP 1장의 마지막 내용에 있으며, 개략적인 내용으로는 도움이 된다. 각 부분은 앞으로 진도를 나가며 더 깊게 진행하게 된다.
프로세스
- 운영체제가 프로그램을 위해 생성하는 단위이다. n개의 프로세스
- 프로세스는 실행 중인 프로그램을 의미하며, 프로세서랑 다르다.
한 CPU로(싱글 코어, 싱글 쓰레드라고 가정한다) 여러 프로세스를 다루는 것은 문맥 교환이라는 하이 테크놀로지 기술로 구성된다.
- 한 프로세스의 명령어를 순식간에 처리한다. 또 다른 프로세스의 명령어도 순식간에 처리한다. 이런 식으로 실행되어있고 처리해야 할 모든 프로세스들의 명령어들에 대해 반복한다. 사람이 PC를 사용하고 있으면 모든 프로세스가 동시에 잘 되는 것 처럼 보인다.
가상 메모리
게임 프로세스가 웹 프로세스의 메모리 영역의 내용을 덮어써버리면 컴퓨터가 원하는대로 작동하지 않을 것이다. 그래서 프로세스 단위로 구분된 메모리 공간을 제공하기로 했는데 이것이 가상 메모리이다.
- 독립된 공간인 양 착각하게 만드는데 의의가 있다. 어쨌든 논리적으로는 구분이 되니 이것을 통해 각 프로세스끼리의 서로의 영역 침범을 막을 수 있다. 그리고 이 내용 덕분에 실제 RAM 용량을 고려하지 않고 프로그램을 개발 할 수 있게 되었다.
- 이 이유는 프로그램의 모든 부분이 항상 동시에 필요한 것은 아니기 때문이다.
지금 당장 쓸 부분을 불러오고, 다 썼으면 메모리를 해제하고, 이걸 반복하면 엄청 큰 프로그램도 메모리에 가져오는 지연이 있을 순 있다. 그래도 모든 내용을 RAM에 한 번 이상 적재하는 것은 불가능한 일은 아니다.
- 그럼 RAM을 왜 늘려야하나요? 라는 의문에 이 내용은 답하기 적합하다. "계속 불러오는 과정의 지연"을 줄여주는데 있어 RAM 용량 증설은 의의가 있다.
가상 메모리의 물리적 위치를 딱 특정 잡아서 이야기하기는 다소 곤란하다.
- 가상 메모리의 주 내용인 Page Table은 RAM에 직접 저장된다.
- 하지만 이 내용을 실제 물리 주소로 변환하는 작업은 정말 자주 일어난다. 그래서 전담 할 하드웨어가 필요했고 이것은 CPU에 따로 갖춰진 메모리 관리 장치(MMU)가 그 역할로 쓰인다.
즉, 가상 메모리는 운영체제라는 소프트웨어와 MMU라는 하드웨어 사이 RAM을 중간다리로 놓고 이루어지는 거대한 시스템이다.
File
유닉스에서 모든 것은 파일이다 라는 말이 있다.
흔하게 이야기하는 문서 파일, 그림 파일이랑은 느낌이 다르다.
I/O, 디스크, 네트워크 등의 장치들을 파일이라는 하나의 통일된 개념으로써 다루게 된다.
- 이렇게 해서 오는 장점은 프로그램이 입력을 받아야하면 개발자는 "파일 읽기" 만 지정해주면 된다는 것이다.
- 장치마다 제어하는 방법이 다른 점을 운영체제가 다 알아서 해주겠다가 되는 것이니, 개발자는 파일이라는 인터페이스를 인지하면된다.
'컴퓨터 이론 > CS:APP' 카테고리의 다른 글
컴퓨터가 프로그램을 실행하는 과정 (2) | 2025.08.15 |
---|---|
bit에 몸을 맡기다 (하드웨어에서의 버스) (2) | 2025.08.15 |
컴퓨터가 프로그램을 뚝딱 만드는 과정 (4) | 2025.08.15 |
[CS:APP] Chap 9.1 - 9.8 : Virtual Memory (0) | 2025.04.23 |
[CS:APP] Chap 8 : Exceptional Control Flow (0) | 2025.04.23 |