⛳️ 인프런 - cs 지식의 정석 강의를 듣고 학습한 내용입니다.
운영체제와 컴퓨터 시스템 구조
GUI와 CUI
컴퓨터와 상호작용할 때 사용하는 인터페이스는 크게 GUI(Graphical User Interface)와 CUI(Character User Interface)로 나뉜다.
- CUI는 CLI(Command Line Interface)라고도 한다.
- ChatGPT도 사용자와 문자 기반으로 상호작용하므로 CUI의 한 예시라 할 수 있다.
운영체제의 역할

운영체제(OS, Operating System) 는 하드웨어와 소프트웨어 사이에서 중재자 역할을 한다. 즉, 사용자가 프로그램을 실행하거나 파일을 열 때, 실제 작업을 처리하는 것은 하드웨어이지만 이를 효율적으로 관리하고 사용자가 편리하게 사용할 수 있도록 도와주는 것이 운영체제이다.
운영체제의 핵심 부분인 커널(Kernel)은 하드웨어 자원을 직접 관리하며, 시스템 안정성을 유지하는 데 중요한 역할을 한다.
운영체제가 수행하는 주요 역할
- CPU 스케줄링 및 프로세스 상태 관리
- 여러 프로그램이 동시에 실행될 때 CPU를 어떤 프로세스에 먼저 할당할지 결정한다.
- 각 프로세스의 상태(실행 중, 대기 중, 완료 등)를 관리한다.
- 예시: 사용자가 웹 브라우저와 음악 앱을 동시에 실행할 때 둘 다 끊김 없이 동작할 수 있게 한다.
- 메모리 관리
- 실행 중인 프로그램이 사용할 메모리 공간을 할당하고, 사용이 끝나면 회수한다.
- 프로그램 간 메모리 충돌을 방지하고, 메모리 낭비를 최소화한다.
- 디스크 파일 관리
- 파일 생성, 수정, 삭제 등의 작업을 관리한다.
- 파일 시스템을 통해 데이터를 쉽게 찾고 사용할 수 있게 한다.
- 예시: 폴더 구조 관리, 파일 권한 설정 등
- 입출력(I/O) 장치 관리
- 키보드, 마우스, 프린터, 모니터 등 다양한 입출력 장치의 작업을 조율한다.
- 예시: 문서를 출력할 때 다른 작업과 충돌하지 않게 프린터 작업을 예약한다.
시스템 구조
컴퓨터 시스템은 계층 구조로 구성되어 있으며, 각 계층은 특정 역할을 담당한다.

- 사용자 프로그램(애플리케이션): 브라우저, 게임, 워드프로세서 등 사용자가 직접 실행하는 프로그램
- 인터페이스 (GUI 또는 CUI): 사용자가 컴퓨터와 상호작용할 수 있게 도와주는 계층
- 시스템 콜 (System Call): 사용자 요청을 커널에 전달하는 매개체 역할
- 커널 (Kernel): 운영체제의 핵심으로 자원 관리 및 시스템 제어를 담당
- 하드웨어 (Hardware): 실제 물리적인 컴퓨터 장치들(CPU, 메모리, 디스크 등)
이 중 2번 ~ 5번이 OS에 해당한다.
컴퓨터 시스템 구성 요소
CPU (Central Processing Unit)
CPU는 컴퓨터의 "두뇌"로, 메모리에 있는 명령어를 가져와 해석하고 실행한다. 사용자 명령이나 프로그램 실행 요청을 처리한다.
CPU 내부 구성 요소
ALU (Arithmetic and Logical Unit)
- 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈)과 논리 연산(AND, OR, NOT 등)을 수행한다.
- 계산기처럼 데이터 계산을 담당한다.

CU (Control Unit)
- 프로그램 명령어를 읽고 해석하며, ALU나 메모리에 작업을 지시한다.
- 작업 순서를 결정하여 프로그램이 올바르게 실행되도록 돕는다.
레지스터 (Register)
- CPU 내부의 매우 빠른 임시 저장 공간이다.
- 계산 도중 필요한 데이터를 일시적으로 저장하며, 메모리보다 빠른 속도로 데이터 접근이 가능하다.
DMA 컨트롤러 (Direct Memory Access Controller)
CPU의 부담을 줄이기 위해 메모리와 I/O 장치 간 데이터 전송을 대신 처리한다.
- 예시: 대용량 파일 다운로드 시 CPU를 사용하지 않고 메모리로 직접 데이터 이동
메모리
프로그램이 실행되기 위해 필요한 데이터를 저장하는 공간이다.
- RAM (Random Access Memory): 실행 중인 프로그램과 데이터를 일시적으로 저장한다. 전원이 꺼지면 데이터가 사라진다.
- ROM (Read Only Memory): 부팅 시 필요한 기본적인 데이터를 저장하며, 전원이 꺼져도 데이터가 유지된다.
타이머
프로그램 실행 시간과 CPU 사용 시간을 제어한다.
- 일정 시간 초과 시 CPU 점유권을 다른 프로그램에 넘겨준다.
디바이스 컨트롤러
각 입출력 장치를 관리하며, 디바이스별로 작은 CPU처럼 작동한다.
- 로컬 버퍼: 디바이스에 포함된 소규모 메모리로, 데이터 전송 중 임시 저장에 사용된다.
인터럽트(interrupt)
인터럽트는 CPU가 실행 중인 작업을 잠시 멈추고, 특정 이벤트를 처리한 후 다시 원래 작업으로 돌아가는 메커니즘이다. 이는 시스템의 효율성과 응답성을 높이는 역할을 한다.
인터럽트 발생 원인
- 하드웨어 인터럽트: I/O 디바이스(키보드 입력, 마우스 클릭, 파일 읽기/쓰기 등)에서 발생
- 소프트웨어 인터럽트(트랩, trap): 산술 연산 오류(0으로 나누기), 프로세스 종료/시작 등
인터럽트 동작 과정
- CPU가 코드 실행 중
- 인터럽트 발생 (하드웨어 또는 소프트웨어)
- CPU가 인터럽트 벡터로 점프하여 인터럽트 핸들러 실행
- 인터럽트 처리 완료 후 원래 코드로 복귀
시스템 콜(System Call)
시스템 콜은 유저 프로그램이 운영체제의 커널 기능에 접근할 때 사용하는 인터페이스이다.

시스템 콜의 역할
- 프로세스 관리: 생성, 종료, 대기 등
- 파일 관리: 파일 열기, 읽기, 쓰기
- 디바이스 관리: 입출력 장치 사용
- 시간 및 날짜 관련 시스템 호출
- 프로세스 간 통신(IPC)
시스템 콜 동작 과정
- 유저 프로그램이 I/O 요청 트랩 발생
- 시스템이 요청의 유효성을 검사
- 유저 모드에서 커널 모드로 전환
- 커널 함수 실행 후 결과 반환

커널(Kernel)과 유저/커널 모드
운영체제의 핵심 부분인 커널은 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스 관리 등을 담당한다.
모드 구분
- 유저 모드(User Mode): 제한된 자원 접근 가능
- 커널 모드(Kernel Mode): 모든 자원 접근 가능
시스템 콜과 모드 전환
- 유저 모드 → 커널 모드 전환 시, 시스템 콜이 실행된다.
modebit
값을 사용하여 모드를 구분
- 1
: 유저 모드
- 0
: 커널 모드
시스템 콜의 장점
- 유저 프로그램과 커널을 분리하여 보안 강화
- 유저 프로그램이 복잡한 운영체제 내부 동작을 신경 쓸 필요 없음
- 악성 프로그램의 직접적인 커널 접근 방지
- 예: 악성 카메라 앱이 커널을 직접 제어하지 못하도록 보호