인프런의 운영체제 공룡책 강의를 듣고 정리한 포스팅입니다.
운영체제의 정의
하드웨어 제어, 사용자와 어플리케이션 프로그램에 서비스를 제공하는 소프트웨어
컴퓨터에서 항상 실행하고 있는 프로그램
→ 여기서 핵심은 커널(Kernel)
프로그램의 두 가지 타입
- 시스템 프로그램
- 응용 프로그램
커널
커널에서 시스템 프로그램과 어플리케이션 프로그램에 대한 인터페이스 제공
인터럽트 (Interrupts)
CPU와 I/O device가 서로 통신하는 방법 중 하나
- 하드웨어가 언제나 인터럽트를 트리거 시킬 수 있음
- 트리거 시키면, 시스템 버스를 통해 CPU에 신호를 보냄
저장 시스템
용량, 속도에 따라 계층 구조가 나뉨
계층 구조 (상위 → 하위)
- CPU 내부에 있는 레지스터
- 캐시
- 메인 메모리 (RAM)
- SSD (solid-state disk)
- 하드디스크
- 광디스크
- 마그네틱 테이프
컴퓨터 시스템 컴포넌트의 정의
Symmetric multiprocessing (SMP)
메모리는 한 개인데, 메모리와 연결된 프로세서(CPU)가 여러개 (각각의 레지스터, 캐시를 가지고)
Multi-core design
CPU(프로세스 칩) 한 장 안에 코어가 여러개
Multiprogramming
메모리에 여러 개(한 개 이상)의 프로그램을 동시에 올리는 것
프로세스가 동시에 여러개 올라가있으면 CPU 사용 효율이 좋아짐
Multitasking (=multiprocessing)
멀티 프로그래밍을 통해 멀티태스킹이 가능해짐
하나의 CPU가 실행속도가 빠를 때, 여러 개의 프로세스를 자주 바꿔주면
⇒ 사용자 입장에서는 동시에 하는 것처럼 보임
⇒ concurrency, pallelelism
이걸 하기위해 CPU 스케쥴링이 필요 → CPU 효율을 제일 좋게 만드는 방법을 골라서
운영체제의 모드

유저모드와 커널모드
⇒ 다른 프로그램에 방해하는 것을 막아주는 것도 운영체제의 역할
커널모드가 아니면 컴퓨터의 직접적인 하드웨어 제어를 막음
→ 유저 모드에서 시스템 콜을 통해 커널 모드로 바꾸어 자원에 접근하도록
컴퓨팅 환경
- 클라이언트 - 서버 : 1 대 1 (Web)
- P2P : N 대 N
- 클라우드 컴퓨팅
운영체제 서비스
컴퓨터 프로그램이 실행될 수 있는 환경을 제공하는 것이 운영체제의 역할
- 프로세스의 개념 (하위 개념인 Thread)
- 멀티 프로세싱 시 동기화 문제 (데드락 문제)
- 멀티 프로세싱을 하기위한 CPU 스케줄링
- 이것들을 처리하기 위한 메모리 관리, 가상 메모리 관리
사용자와 운영체제 인터페이스
OS와 사용자간 인터페이스 방법
- CLI (Command line interface) : shell, 명령어 기반
- GUI (Graphical user interface) : windows, macOS
- Touch-Screen Interface : android UI, iPhone UI
컴퓨터 응용 프로그램과 OS간 인터페이스 방법
- 시스템 콜 : OS가 제공해주는 서비스를 시스템 콜을 통해 호출
- API : Application Programming Interface
인프런의 운영체제 공룡책 강의를 듣고 정리한 포스팅입니다.
운영체제의 정의
하드웨어 제어, 사용자와 어플리케이션 프로그램에 서비스를 제공하는 소프트웨어
컴퓨터에서 항상 실행하고 있는 프로그램
→ 여기서 핵심은 커널(Kernel)
프로그램의 두 가지 타입
- 시스템 프로그램
- 응용 프로그램
커널
커널에서 시스템 프로그램과 어플리케이션 프로그램에 대한 인터페이스 제공
인터럽트 (Interrupts)
CPU와 I/O device가 서로 통신하는 방법 중 하나
- 하드웨어가 언제나 인터럽트를 트리거 시킬 수 있음
- 트리거 시키면, 시스템 버스를 통해 CPU에 신호를 보냄
저장 시스템
용량, 속도에 따라 계층 구조가 나뉨
계층 구조 (상위 → 하위)
- CPU 내부에 있는 레지스터
- 캐시
- 메인 메모리 (RAM)
- SSD (solid-state disk)
- 하드디스크
- 광디스크
- 마그네틱 테이프
컴퓨터 시스템 컴포넌트의 정의
Symmetric multiprocessing (SMP)
메모리는 한 개인데, 메모리와 연결된 프로세서(CPU)가 여러개 (각각의 레지스터, 캐시를 가지고)
Multi-core design
CPU(프로세스 칩) 한 장 안에 코어가 여러개
Multiprogramming
메모리에 여러 개(한 개 이상)의 프로그램을 동시에 올리는 것
프로세스가 동시에 여러개 올라가있으면 CPU 사용 효율이 좋아짐
Multitasking (=multiprocessing)
멀티 프로그래밍을 통해 멀티태스킹이 가능해짐
하나의 CPU가 실행속도가 빠를 때, 여러 개의 프로세스를 자주 바꿔주면
⇒ 사용자 입장에서는 동시에 하는 것처럼 보임
⇒ concurrency, pallelelism
이걸 하기위해 CPU 스케쥴링이 필요 → CPU 효율을 제일 좋게 만드는 방법을 골라서
운영체제의 모드

유저모드와 커널모드
⇒ 다른 프로그램에 방해하는 것을 막아주는 것도 운영체제의 역할
커널모드가 아니면 컴퓨터의 직접적인 하드웨어 제어를 막음
→ 유저 모드에서 시스템 콜을 통해 커널 모드로 바꾸어 자원에 접근하도록
컴퓨팅 환경
- 클라이언트 - 서버 : 1 대 1 (Web)
- P2P : N 대 N
- 클라우드 컴퓨팅
운영체제 서비스
컴퓨터 프로그램이 실행될 수 있는 환경을 제공하는 것이 운영체제의 역할
- 프로세스의 개념 (하위 개념인 Thread)
- 멀티 프로세싱 시 동기화 문제 (데드락 문제)
- 멀티 프로세싱을 하기위한 CPU 스케줄링
- 이것들을 처리하기 위한 메모리 관리, 가상 메모리 관리
사용자와 운영체제 인터페이스
OS와 사용자간 인터페이스 방법
- CLI (Command line interface) : shell, 명령어 기반
- GUI (Graphical user interface) : windows, macOS
- Touch-Screen Interface : android UI, iPhone UI
컴퓨터 응용 프로그램과 OS간 인터페이스 방법
- 시스템 콜 : OS가 제공해주는 서비스를 시스템 콜을 통해 호출
- API : Application Programming Interface