Chapter 2
1. Operating System Services → O/S는 서비스를 제공해주는 것임O/S는 프로그램을 실행하기 위한 환경을 제공함.
system call이라는 방식으로만 os를 사용 가능.
2. OS Services for user Support
유저를 도와주는 OS의 서비스들
1. user interface
- os의 서비스로 볼 수 있습니다. (GUI, CLI 등)
2. program execution
- 프로그램의 로딩, 시작, 끝, 가지치기 등등을 관리
3. I/O operation
4. File system manipulation
- 파일 읽고 쓰기, 만들고 지우기 등등 파일 시스템 조작
5. Communication
- 프로세스(=실행되고 있는 프로그램) 간의 정보 교환
- 인터넷 사이에서도 네트워킹
6. Error detection
- CPU, memory, I/O devices, User program(div-by-0,illegal memory access) 등과 같은 에러 발생 가능
- OS가 조치를 취함.
3. Services for Efficient Operation
효율적인 작동을 위한 OS services
1. resource allocation
- 대역폭 나누기(속도), 공간 나누기 (메모리)
- cpu, memory, file storage : 내부 커널에 코드로 박혀있음. (special allocation code)
- I/O devices : 일반적인 표준 (일반적인 코드로 여러 devices 조절)
2. accounting (of resource usage) - 추적
- capacity planning(용량의 규모를 결정하는 것)을 평등하게 사용할 수 있도록 billing
3. Protection and security
- Protection은 다른 프로세스가 또 다른 프로세스나 OS를 간섭할 수 없도록 함
- Security는 인증된 사용자의 system과 hardware에 저장된 정보를 보호하는 것
- 비승인된 접근, 데이터의 악의적 파괴나 변형, 부정합 발생등이 있다.
4. System calls
-
함수처럼 생겼음.
-
OS를 사용할 수 있는 유일한 방법.
-
시스템 콜들은 간단한 작업에도 엄청나게 많이 사용됨.
- thousands of system calls per second
-
프로그래머는 API를 통해 간접적으로 system call을 사용
-
libc : c library for Unix/Linux environment
-
windows API, Posix API, java API
-
API on top of anothoer API
- Java API는 이중 간접으로 systemcall을 부름 ( java API -> libc -> syscall )
-
API를 통해 간접적으로 system call을 사용하는 이유
- 직접적으로 사용하기 너무 어려움
- Portability(이식성) : 어떤 libc든 다른 곳에 가도 실행 가능
-
libc와 이름이 같은 systemcall로써 예를 들어 read -> read 인 것들을
Wrapper function이라고 부름
- user application에서 open()function을 통해 syscall 호출 ( user mode )
- interrupt 발생 : 내 프로그램이 kernel mode로 바뀜 ( mode switch )
- kernel mode 에는 system call function의 주소들이 저장되어 있음.
- 작업이 끝난 후 user mode로 바뀐 후 return value를 함.
5. system call interface
6. System call types
Six major categories
- Process control
- File manipulation
- Device manipulation
- Information maintenance
- Communications
- Protection
7. System call types: Process Control -> 돌고있는 프로그램
Type of tasks
- end,abort -> 종료
- wait for time
- load, executte -> 프로그램 띄우는 것
- wait event, signal event
- create or terminate process-> 프로세스와 프로세스 간 만듦과 종료
- allocate and free memory
- get/set process attributes -> 프로세스 성질
Senarios
-
Error handling
- 종료해야함 -> memory dump(오류를 하드 디스크에 저장)를 만듦 -> 메세지 출력
-> 다음 command 실행
- In GUI, pop-up window가 보여짐
- In batch system, 모든 동작이 종료.
-
loading and executing another program
- 프로세스가 종료되면 실행 지점을 어떻게 할 것인가를 정해야 함.
- 원래와 새로운 프로그램을 concurrently하게 실행할 것인지 정해야 함.
-
In multiprogramming, we need tto control processes
- Get/set process atttributes
- Wait for the completion of execution
- OS provides system calls for lokcing shared data
- Selectively terminatttet unneeded processes
8. System programs
-
system programs = system utilities -> 시스템에 도움을 주는
- file management
- status information - 정보 보기
- file modifiicattion
- programming language support
- program loading and execution
- communications
- background services : ftpd, sshd, 등등 데몬들
-> 사용자의 요청을 기다리며 죽지 않는 프로그램들
-
Application programs
-web browsers, text editor, spreadsheet, database, compiler, plotting, statistics package ...
9. OS Design and Implementation
- Desgin goals : 요구사항은 두개로 나뉘어진다.
- User goals : 사용편리, 신뢰가능한, 배우기 쉬운, 빠른
- System goals : 구현이 쉽고, 관리가 쉽고, 운영하기 쉽고, flexible,efficient, 고장을 견디는 능력이 좋아야 함 ( 고장은 나고 서비스를 돌리는 것)
- Guildline : Mechanism and Policy
- 메커니즘과 정책을 분리해라.
- mechanism : how
- policy : what
- 정책의 변화가 메커니즘의 변화를 요구할 수 있기 때문에, 분리하는 게 이상적임.
10. OS Implementation -> 실제 코딩구현
- assembly 언어로 구현
- high level 언어로 구현 (c, java, ...)
- Advantages
- 구현 시간이 빠름
- Compact하고 이해/디버깅 하기 쉬움
- 개선된 compiler는 generated code를 개선해줌
- 다른 환경으로 이식하기 쉬움
- MS-Dos는 emulator가 필요함
- Linux는 C로 이루어져 있는데, emulate가 필요 없다.
- Disadvantages
- performance : 요즘은 그렇지도 않다.
- compiler가 complex dependencies를 잘 핸들링함.
- compromise : 작은 중요 코드는 처음엔 high-level 언어로 작성 후 나중에 최적화된 것으로 대체
11. OS 구조
- Monolitthic VS modularized
- component( module ) : system inputs, outputs, functions을 부분적으로 잘 정리함
- Simple Structure
- MS-DOS, Original UNIX
- 간단히 시작해서 점점 커져서 out of control 상태가 됨.
12. OS 구조 : Layered Approach
-
계층적 구조로의 접근
-
N번째 레이어는 N-1의 기능으로만 작동한다.
-
장점 : 간단하다 -> 디버깅하기 쉽다. ( 오류가 나면 그 전 레이어꺼만 확인하면 됨 )
-
단점 : 레이어가 많다 보면, 오버헤드 되는 시간 때문에 시간이 오래 걸린다.
13. Microkernels
-
키포인트 : 커널을 최소한의 정말 필요한 기능만 넣어서 만들자.
-
주요 기능이 아닌 것은 일반 프로그램으로 빼내자.
-
일반 프로그램들끼리는 kernel을 통해 메세지를 주고 받는다.
-
장점
- 확장을 쉽게 할 수 있다 (옆에 이어 붙이면 되므로)
- 커널이 작기 때문에 이동시키기 쉽다.
- 커널이 작기 때문에 복잡하지 않아서 보안성이 좋다.
-
단점
- 메세지를 주고 받아야 하기 때문에 퍼포먼스의 지장을 준다.
-
커널의 정말 필요한 기능들
- 통신 기능 (interprocess Communication)
- 메모리 관리 ( 공동으로 메모리를 쓰므로 관리가 필요함 )
- CPU 스케줄링 ( 프로세스들을 관리 해야 하므로 )
이미지 출처 : operating system concepts 10th