컴퓨터 구조 + 운영체제 한 장 정리
소스코드가 실행 중인 프로세스가 되기까지
첨부 이미지의 핵심은 하드웨어(CPU, 메모리, 디스크, 입출력)와 운영체제(프로세스, 메모리, 파일, 디스크 관리)가 프로그램 실행을 어떻게 이어 주는지입니다. 움직이는 선은 데이터와 제어 흐름을, 클릭 가능한 용어는 반드시 알아야 할 개념을 설명합니다.
관계 다이어그램
노드를 클릭하면 해당 개념의 상세 모달이 열립니다. 파란 흐름은 명령/데이터 이동, 초록 흐름은 실행 상태 전환, 주황 흐름은 저장장치 접근을 뜻합니다.
CPU, 메모리, 디스크 사이의 명령과 데이터 이동
프로그램이 프로세스로 실행되고 CPU 시간을 받는 흐름
디스크의 프로그램과 파일이 메모리로 적재되는 흐름
클릭형 용어 사전
이미지에 나온 약어와 시험에서 자주 묻는 차이를 묶었습니다. 각 버튼을 누르면 정의, 비유, 연관 개념을 확인할 수 있습니다.
실행 흐름으로 다시 보기
분리된 용어를 하나의 실행 과정으로 연결하면 암기가 훨씬 쉬워집니다.
소스코드 작성
C, C++, Java, JavaScript, Python 같은 언어로 사람이 읽는 코드를 만듭니다.
번역 또는 해석
컴파일 언어는 기계어 또는 바이트코드로 바꾸고, 인터프리터 언어는 런타임이 코드를 순차적으로 해석합니다.
메모리 적재
운영체제가 디스크의 프로그램을 메모리에 올립니다. MMU는 가상 주소를 실제 주소로 바꾸고 접근 권한을 관리합니다.
프로세스 생성
실행 중인 프로그램은 프로세스가 됩니다. 프로세스 안에는 하나 이상의 스레드가 CPU에서 실행될 수 있습니다.
자원 스케줄링
CPU 스케줄러, 메모리 교체 알고리즘, 디스크 스케줄러가 제한된 자원을 어떤 순서로 줄지 결정합니다.
빠른 확인 문제
각 문제의 답 보기를 눌러 핵심 차이를 점검합니다.
프로그램과 프로세스의 차이는 무엇인가?
프로그램은 디스크에 저장된 정적인 파일이고, 프로세스는 그 프로그램이 메모리에 올라와 실행 중인 상태입니다.
선점형 스케줄링이 필요한 이유는 무엇인가?
한 프로세스가 CPU를 너무 오래 붙잡지 못하게 운영체제가 중간에 CPU를 회수하여 응답성과 공정성을 높이기 위해서입니다.
가상 메모리는 왜 사용하는가?
프로세스마다 독립적인 큰 주소 공간을 주고, 실제 메모리보다 큰 프로그램도 필요한 부분만 올려 실행하기 위해서입니다.