2026년 4월 18일 · 조회수 11
CS / OS[OS] 1. 운영체제 들어가기
본 글은 인프런 강의를 바탕으로 정리한 개인 학습 기록입니다.
출처: <그림으로 쉽게 배우는 운영체제>
목차
1. 운영체제 개요
2. 운영체제의 역사
3. 운영체제의 구조
4. 컴퓨터 하드웨어와 구조
5. 컴퓨터 부팅 과정
6. 인터럽트
1. 운영체제 개요
운영체제의 역할
- 프로세스 관리
- 메모리 관리
- 하드웨어 관리
- 파일 시스템 관리
2. 운영체제의 역사
1) 1940년도: 초기 컴퓨터
- 컴퓨터가 매우 비싸고 느리게 운영됨
- 프로그래밍은 스위치와 배선을 직접 연결하는 방식
- 입출력은 펀치카드로 처리해서 매우 느렸음
- 입출력 중에는 CPU가 쉬게 되어 CPU 사용률이 낮았음
2) 1950년도: 배치 시스템
- 오퍼레이터가 작업을 하나씩 넣고 결과를 전달하는 과정이 비효율적이었음
- 이를 줄이기 위해 배치 시스템 등장
- 여러 작업을 모아 순서대로 자동 실행
- 사람 개입이 줄어들어 CPU 활용 효율 증가
3) I/O 컨트롤러와 인터럽트
- 입출력을 별도 장치가 담당
- 작업이 끝나면 인터럽트로 CPU에 알림
- CPU가 입출력 동안 다른 일을 할 수 있어 효율 향상
- 하지만 입력 대기 상황에서는 여전히 CPU가 놀 수 있었음
4) 1960년대: 시분할 시스템
- 여러 프로그램을 메모리에 올려두고 CPU 시간을 잘게 나눠 번갈아 실행
- 사용자 입장에서는 동시에 실행되는 것처럼 보임
- 입력 대기 중인 프로그램 대신 다른 프로그램을 실행해 CPU 사용률을 더 높임
- 이 시기에 다중 사용자 시스템도 등장
5) 운영체제가 복잡해진 이유
시분할과 다중작업이 가능해지면서 발생한 새로운 문제:
- 메모리 보호 문제: 한 프로그램이 다른 프로그램이나 운영체제 영역을 침범할 수 있음
- 주소 재배치 문제: 여러 프로그램이 메모리에 함께 올라가면 실행 위치가 달라짐
- 이를 해결하려고 베이스 레지스터 같은 장치가 필요해짐
- 다중 사용자 환경 때문에 파일 시스템도 필요해짐
6) 1970년대 이후
- 하드웨어 가격이 내려가면서 개인용 컴퓨터 시대가 시작됨
- 운영체제는 개인 사용자도 쉽게 쓸 수 있는 방향으로 발전
- 대표적으로 Macintosh, MS-DOS 등이 등장
3. 운영체제의 구조
1) 커널과 사용자 접근
- 사용자는 커널에 직접 접근할 수 없음
- 반드시 운영체제가 제공하는 인터페이스를 통해 접근해야 함
- 인터페이스 방식에는 GUI와 CLI가 있음
2) GUI와 CLI
-
GUI
- 그래픽 기반 인터페이스
- 사용이 직관적이고 쉬움
- 예: Windows, macOS
-
CLI
- 텍스트 명령어 기반 인터페이스
- 명령어를 직접 입력해 작업 수행
- 예: Unix, Linux
3) 시스템콜의 역할
- 애플리케이션은 시스템콜을 통해 커널에 접근
- 시스템콜은 프로그램이 하드웨어나 자원에 직접 접근하지 못하게 막고, 커널이 대신 안전하게 처리하도록 함
- 예: 파일 저장 시
write같은 시스템콜을 사용해 커널이 빈 공간을 찾아 안전하게 저장
4) 드라이버의 역할
- 사용자/애플리케이션 ↔ 커널: 시스템콜
- 커널 ↔ 하드웨어: 드라이버
- 드라이버는 커널이 다양한 하드웨어를 제어할 수 있게 해줌
- 단순한 장치(키보드, 마우스)는 기본 포함되는 경우가 많고, 복잡한 장치(그래픽카드 등)는 별도 설치가 필요할 수 있음
4. 컴퓨터 하드웨어와 구조
1) 폰 노이만 구조
- 프로그램을 메모리에 저장해 두고 실행하는 방식
- CPU와 메모리를 버스로 연결해 데이터와 명령어를 주고받음
- 예전처럼 배선을 다시 연결할 필요 없이 프로그램만 바꾸면 됨
- 그래서 컴퓨터 사용과 프로그램 변경이 훨씬 쉬워짐
2) 메인보드
- 컴퓨터의 여러 하드웨어를 연결하는 핵심 기판
- CPU, 메모리, 저장장치, 그래픽카드 등이 메인보드에 연결됨
- 장치들 사이의 데이터 전달 통로 역할도 함
3) CPU
- 컴퓨터의 연산과 제어를 담당하는 핵심 장치
- 주요 구성:
- ALU: 산술·논리 연산 수행
- 제어장치: 각 장치의 동작을 지시하고 제어
- 레지스터: CPU 내부의 고속 임시 저장 공간 (변수)
4) 메모리
-
RAM (Random Access Memory)
- 실행 중인 프로그램과 데이터를 저장
- 휘발성이라 전원이 꺼지면 내용이 사라짐
-
ROM (Read Only Memory)
- 비휘발성이라 전원이 꺼져도 내용이 유지됨
- 부팅에 필요한 기본 정보 저장에 사용됨
5. 컴퓨터의 부팅과정
1) BIOS 실행
- 전원 버튼을 누르면 가장 먼저 ROM에 저장된 BIOS가 실행됨
- BIOS는 부팅 절차를 시작하는 기본 프로그램임
2) 하드웨어 점검(POST)
- BIOS가 주요 하드웨어에 이상이 없는지 확인함
- 점검 대상:
- 전원
- CPU
- 메모리
- 키보드
- 마우스
- 하드디스크
- 문제가 있으면 오류음이 나고 부팅이 중단됨
3) 부트로더 실행
- 이상이 없으면 하드디스크의 **마스터 부트 레코드(MBR)**에 있는 부트로더를 메모리로 불러와 실행함
4) 운영체제 선택
- 운영체제가 여러 개 설치되어 있으면 어떤 운영체제를 실행할지 선택함
- 운영체제가 하나만 있으면 바로 다음 단계로 넘어감
5) 운영체제 로딩
- 선택된 운영체제를 메모리에 적재
- 운영체제가 실행되면 바탕화면이 나타남
6) 운영체제의 관리 시작
- 이후 실행되는 모든 응용 프로그램은 메모리에 올라와 실행됨
- 이 프로그램들은 모두 운영체제가 관리함
BIOS 실행 → 하드웨어 점검 → 부트로더 실행 → 운영체제 로딩
6. 인터럽트
1) 폴링
- CPU가 입출력 작업 완료 여부를 계속 반복해서 확인하는 방식
- 작업이 끝났는지 알기 위해 주기적으로 상태를 검사함
- CPU가 확인 작업을 계속 해야 해서 비효율적임
2) 폴링의 단점
- CPU가 쓸데없이 반복 확인을 해야 함
- 그만큼 CPU 자원이 낭비됨
- 전체 시스템 성능이 떨어질 수 있음
3) 인터럽트
- CPU가 입출력 명령만 내린 뒤 다른 작업을 수행
- 입출력이 끝나면 장치가 CPU에 신호(인터럽트) 를 보냄
- CPU는 그 신호를 받으면 필요한 처리를 수행함
- 폴링보다 효율적임
4) 인터럽트 서비스 루틴(ISR)
- 인터럽트가 발생했을 때 실행되는 처리 함수
- CPU는 인터럽트를 받으면 해당 ISR을 실행해 필요한 작업을 마무리함
5) 인터럽트 종류
- 하드웨어 인터럽트
- 입출력 완료 등 장치에서 발생하는 인터럽트
- 소프트웨어 인터럽트
- 프로그램 실행 중 발생하는 인터럽트
- 예:
- 잘못된 메모리 접근
- 0으로 나누기
댓글
댓글을 불러오는 중...