OS-2) 운영체제 기본과 구조
| topics | 700-컴퓨터과학 704 운영체제 |
| types | 학습 이론 |
| tags | #os #kernel #interrupt |
운영체제 기본과 구조
운영체제의 정의, 역할, 구조를 정리한다.
관련 문서
- OS-1)컴퓨터 시스템%EC%BB%B4%ED%93%A8%ED%84%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C.html) - 이전 장
- OS-3) 운영체제 연산-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%97%B0%EC%82%B0.html) - 다음 장
- OS-5) 프로세스-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4.html) - 프로세스 개념
운영체제 정의
==운영체제: 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어==
운영체제 목표
- 컴퓨터 시스템을 사용하기 편리하게 만들자
- CLI, GUI 등을 제공
운영체제 설계
- 정책: 무엇을 할 것인가
- 기법: 어떻게 할 것인가
==운영체제 역할==
- 자원할당기: 모든 자원을 관리 (I/O, 메모리 등)
- 제어프로그램: 프로그램 실행 제어
- 프로세스, 메모리, 하드웨어 관리
- 보호와 보안
- 보호: 자원의 엑세스를 제어
- 보안: 시스템 방어, 권한으로 제어하는 경우가 많음
관점, 목적에 따라 달라진다.
커널
- 시스템의 기본적인 관리를 담당
- 소프트웨어 ↔ 하드웨어 인터페이스 역할
- 항상 실행되는 유일한 프로그램
==운영체제 실행==
부트스트랩 프로그램 (= 펌웨어)
- 전원이 공급되는 시점에서 적재되는 프로그램
- ROM BIOS에 저장되어 있음
- 구성요소 초기화
- 부트 블록(디스크 블록 0)에서 운영체제 위치가 담겨 있음
- 운영체제 커널 적재 후 커널을 실행
==인터럽트==
- 하드웨어 인터럽트: 운영체제와 하드웨어가 상호작용하는 방식
- 소프트웨어 인터럽트
- 운영체제는 인터럽트가 발생해야 작동을 시작함 (Interrupt Driven)
처리 방식 (인터럽트 핸들러)
- 인터럽트 벡터: 서비스 루틴의 주소를 가지고 있음
- 서비스 루틴: 인터럽트 발생 후 처리 내용
- 소프트웨어, 하드웨어 인터럽트로 나뉜다
- 소프트웨어 인터럽트는 트랩 or 예외라고도 불림
- 시스템콜은 소프트웨어 인터럽트의 일종
시스템 프로그램
사용자 관점에서 프로그램 개발 및 실행을 편리할 수 있는 환경을 제공한다.
기능, 역할
- 파일 관리, 조작: 생성, 삭제, 이름 변경, 출력 등
- 상태 정보 제공
- 파일 수정을 위한 편집기 제공, 검색을 위한 툴 제공
- 프로그래밍 언어 지원: 컴파일러, 어셈블러, 디버거, 인터프리터
- 프로그램 적재 및 실행
- 통신
- 백그라운드 서비스
- 부트될 때 실행됨
- 사용자 문맥에서 실행됨
- 서비스, 서브시스템, 디먼이라고도 불림
- 응용프로그램
- 시스템에 속하지 않음
- 사용자에 의해 실행
- 보통 OS에 포함 X
==운영체제 구조==
MS-DOS
단순한 구조
- 모듈 단위로 나누어지지 않음
- 최소 공간에서 최대의 기능 제공하기 위해 개발
UNIX
단순하지 않은 구조
- 두 개의 분리된 부분
- 시스템 프로그램
- 커널
- 완전한 층 구조를 이루지 않음
층 구조
추상적 구조
- 가장 아래층 (Layer 0)은 하드웨어
- 가장 높은층 (Layer N)은 사용자 인터페이스
- 모듈성을 염두함. 각 층은 바로 아래층의 기능과 서비스만 이용하도록 설계
마이크로 커널 시스템
Mach가 그 예
- 커널의 기능을 최대한 사용자 공간으로 이동
- 사용자 모듈 간 통신은 메세지 전달 사용
장점
- 마이크로 커널을 확장하기 쉬움
- OS를 새 아키텍처에 이식 쉬움
- 더 신뢰, 더 안전함
단점
- 사용자 공간 → 커널 공간 통신 시 성능 오버헤드
적재 가능 커널형 모듈
최신 운영체제의 구조 (리눅스, 솔라리스 등)
- 객체 지향 접근법 사용
- 잘 정의된 인터페이스를 사용하여 서로 통신
- 각 모듈은 필요 시 커널 안에서 적재 가능
운영체제 시스템
다중 프로그래밍 시스템
- 메모리에 여러 프로그램 적재
- 하나 실행하다가 대기 상태 될 시 다른 프로그램 실행
- OS는 작업 스케줄링과 CPU 스케줄링을 진행
- 작업 스케줄링: 디스크 → 메모리로 작업 이동
- CPU 스케줄링: 메모리 → CPU 작업 이동
- 시분할 시스템을 이용
시분할 시스템
- CPU가 빈번하게 다른 작업으로 전환하도록 하는 시스템
- 각 사용자들에게 작은 시간 단위를 할당
- 대화식 컴퓨팅 환경을 만들 수 있게 함
- 사용자와 각 작업과 상호작용 가능
- OS는 스케줄링 알고리즘과 컨텍스트 스위칭을 동시 진행
- 프로세스 스케줄링: 각 프로세스에게 CPU 시간을 분배하기 위한 알고리즘
- 컨텍스트 스위칭: 한 작업에서 다른 작업으로 전환하는 것
프로세스 전체가 실행할 수 없다면
스와핑 (Swapping)
- 가장 안 쓰는 프로세스랑 지금 필요한 프로세스를 메모리에서 교체한다 (안 쓰는 프로세스는 보조기억장치에 적재)
- 프로세스 단위의 스와핑
가상메모리
- 필요한 페이지의 주소를 가지고 (페이징 테이블) 페이지 단위로 스와핑함
- 실제 물리적 메모리보다 더 큰 메모리를 실행 가능
- OS-10) 가상 메모리-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC.html) 참고