쉽게 배우는 OS Chapter01
Chapter01 운영체제 개요
01. 운영체제 소개
1.1 운영체제가 있는 기계와 아닌 기계의 차이
자원 :
- 운영체제가 있는 기계는 기능의 추가/향상, 유지보수 측면에서 그렇지 않은 기계보다 훨신 유용하다.
- 운영체제가 없는 기계도 많다. 그러나 정해진 기능만 수행하는 경우가 많다.
- 운영체제는 사용자가 자원에 집적적 접근을 막아서 컴퓨터를 보호한다.
- 사용자는 인터페이스를 통해 컴퓨터의 자원에 접근하고 사용한다.
1.2 운영체제의 역할과목표
역할 | <-> | 목표 |
---|---|---|
자원 관리 | 효율성 | |
자원 보호 | 안정성 | |
HW 인터페이스 제공 | 확장성 | |
User 인터페이스 제공 | 편리성 |
- 자원 관리 : 각 프로그램은 자원을 독점하길 원한다. OS는 프로그램들에게 적절하게 자원을 분배한다.
- 자원관리 : 운영체제는 자원을 적절하게 분배하고 사용하여 최소한의 자원으로 최대한의 효과를 내는걸 목적으로 한다.
- 자원 보호 : 고의던 아니던 사용자가 자원에 직접적으로 접근하는것을 제한하여 이를 보호한다.
- 안정성 : 시스템의 안정성을 보장하여 자원을 보호한다.
- HW 인터페이스 제공 : 우리는 HW를 통해 컴퓨터를 편하게 사용하거나(키마), 혹은 컴퓨터를 통해 HW를 사용한다(프린터기). 운영체제는 사용자가 별다른 설정 없이 HW를 사용할수 있게 하는 인터페이스를 제공한다. 다만, 특정 HW들은 드라이버를 요구한다.
- 확장성 : 다양한 시스템 자원을 추가/제거하기 편하게 한다.
- User 인터페이스 제공 : 운영체제는 사용자가 운영체제를 편하게 사용할수 있게 User 인터페이스(GUI, 터치로 확대 축소 기능…)을 제공한다.
- 편리성 : 사용자에게 편리한 환경을 제공해야한다. 자원관리 부분과 충돌할수 있으므로 적절한 선을 지켜야한다.
드라이버 :
1.3 운영체제 시스템의 종류
최초의 컴퓨터라고 하는 에니악은 프로그래밍은 가능했지만, 운영체제는 없었다.
- 일괄 작업 시스템 : 가장 먼저나온 시스템. 데이터와 프로그램을 한번에 입력하고 작업중에 상호작용/변경 불가능한 시스템.
- 대화형 시스템 : 작업중간중간 사용자의 입력을 받거나, 작업중인 내용을 보여줄수 있는 시스템.
- 시분할 시스템 : 프로그램별로 컴퓨터 자원을 사용하는 시간을 나누어서, 여러 프로그램을 사용할수 있게 하는 시스템.
- 실시간 시스템 : 지정한 응답시간 내에 프로그램이 응답하는걸 보장하는 시스템.
- 다중 사용자 시스템 : 여러 사용자가 사용가능한 시스템. 시분할 시스템에서 여러 프로그램을 동시에 실행해짐 = 여러 사용자가 하나의 컴퓨터를 여러 유저가 사용할수 있게 됨.
- 분산 시스템 : (낮은) 성능의 컴퓨터들을 묶어 하나의 시스템처럼 동작하게 하여 대형 컴퓨터에 버금가능 성능을 내게 한 시스템.
- 클라이언트/서버 구조 시스템 : 작업을 요청하는 클라이언트와, 요청을 처리하고 결과를 전달하는 서버 구조의 시스템
- P2P 시스템 : 서버에서 모든 요청하는 구조에서, 사용자끼리 연결되어 파일등의 데이터를 전송하는 방식. 서버는 인증/접속의 동작만 수행하여 서버의 부하가 크게 감소한다.
03. 운영체제의 구조.
3.1 커널과 인터페이스
- 인터페이스 : 사용자/응용프로그램에 사이에서 커널에 명령을 전달하거나, 처리 결과를 돌려주는 프로그램. 대표적으로 셸이 있다.
- 커널 : 운영체제의 핵심기능들을 모아놓은 것.
3.2 시스템콜과 디바이스 드라이버
- 시스템콜 : 커널이 자신을 보호하기 위해 만든 함수들(인터페이스). 사용자나 응용프로그램은 커널에 명령(자원접근/사용)을 내리기 위해서는 시스템콜을 사용해야만한다. 시스템콜에 특정 큰 동작(데이터 저장, 출력)을 지시하면, 시스템콜이 세부적인 동작(저장 메모리위치, 출력위치 등)은 알아서 하는 식…
- 드라이버 : 커널과 하드웨어 간의 인터페이스. 키보드/마우스 등 보편적인 HW는 커널에서 드라이버 없이 직접 연결되기도 하지만, 프린터같은 하드웨어는 드라이버를 설치해야 하드웨어에 연결할수 있다. <- 그림에서 확인 가능
추가
- API : 특정 응용프로그램에서 제공하는 인터페이스. API사용하여 다른 개발자들이 자신들의 프로그램과 연동 가능하게 하여 확장성을 꾀한다.
- SDK : 프로그램 개발자응 뤼해 API, API 매뉴얼, 관련 코드편집기, 에뮬레이터 등등을 하나로 묶어서 배포하는 개발 툴.
3.3 커널의 구성
커널은 운영체제의 핵심 기능을 모아놓은 프로그램들(?)이다. 커널이 하는 중요한 일들은 아래와 같다.
- 프로세스 관리 : 프로세스에 CPU를 배분하고, 각종 작업에 필요한 제반(모든)환경을 제공한다.
- 메모리 관리 : 프로레스에 작업공간을 배치 및 가상공간 제공
- 파일 시스템 관리 : 데이터 저장/접근이 가능한 인터페이스 제공
- 입출력 관리 : 필요한 입출력 서비스를 제공한다.
- 프로세스간 통신 관리 : 공동 잡업을 위한 프로세스간 통신환경을 지원한다.
이러한 커널은 단일형, 계층형, 마이크로 구조를 가진다.
연습문제
01
운영체제
02
인베디드 OS
03
에플리케이션?
04
자원관리가 힘들어지고, 공격에 취약해지며
05
인터페이스
06
일괄처리 시스템
07
대화형 시스템
08
시분할 시스템
09
???
10
???
11
실시간 시스템
12
분산 시스템
13
P2P
14
시스템콜
15
드라이버
16
단일형 커널
17
마이크로 커널
18
가상머신