📍 배경
- H/W 구입 ➜ OS 설치 ➜ computer 사용 가능
- 응용프로그램 X → 폴더에 가서 file 다루기 정도
- network - - - OS (H/W) ← user
- OS: software를 잘 쓸 수 있게 해주는 역할
📍Operating System Services
1. User interface (U/I) 지원
- 사용자의 작업을 기다리고 있는 상태
- CLI이나 그래픽으로 지원
형태
- command line (CLI)
- 대화 형식, 명령어 라인으로 지원
- kernel에서 구현되는 경우도 있고, system program에서 구현되는 경우도 있음
- 사용자로부터 명령을 가져와 실행
- GUI
- 주로 마우스 사용 (더블클릭, 클릭, 드래그 등)
- batch (= 일괄처리)
- Touch screen
- gesture interface (ex. 확대, 축소)
- 음성 command (ex. 시리, 빅스비)
- 화면상 키보드
2. program 실행
3. I/O 연산 지원
- efficiency (효율), protection (안전)
➠ I/O를 잘 짜진 OS로 구성하는 이유: 검증된 프로그램이기 때문
- user가 I/O를 작업하는 경우 거의 X, OS 담당
4. File system
-
data를 체계적으로 분류, 저장하는 방법지원
-
지원 명령어: 복/붙, delete, move 등
-
file이란?
- 보조기억장치에 저장되는 data 단위
- 얘를 관리한다는 것 = 컴퓨터의 저장기능을 관리한다.
5. communication
- process 간의 comm: process 간 서로 주고 받는
- computer 간의 comm: network를 이용하는
- comm는 shared memory, message passing을 통해 이루어질 수 있음
6. Error direction
- CPU
- memory
- I/O device
- ex. 프린터 사용시 어떤 오류가 났음을 알려주는.
7. Resource allocation
- 여러 사람, user가 여러개를 돌리고 있기 때문에 OS가 관리하고 있음.
- 여러 사용자 또는 여러 작업이 동시에 실행되는 경우 리소스를 각 사용자에게 할당해야 합니다
- resource마다 관리 방법이 다름
8. Accounting (계정관리)
- 계정분류, 관리, 로그인절차
- 사용 권한을 제어하는 것 중 하나.
9. Protection and security
- protection: user, process로부터 system resource 보호
- security: system을 외부, 내부 공격으로부터 보호하는 것
- viruses, worms 보호
- 명의 도용, 불법 사용 방지
📍 System Call
: 내장되어 있는 함수를 call해서 사용하는 것
(운영 체제의 kernel이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 kernel에 접근하기 위한 인터페이스이다.)
- process(실행 상태에 있는 program)와 OS간의 interface
- OS에서 제공하는 서비스에 대한 progamming interface
- program 중간중간 system call 있음 ∴ I/O device 사용가능
- 시스템 호출 사용이 아닌 고급 API(Application Programming Interface)를 통해 프로그램에서 액세스합니다
- portability (이식성): 이 system에도 적용하는 것을 다른 system에도 적용가능한 것. (표준 API사용)
1. 종류
- process 제어
- 프로세스 생성 및 종료
- 메모리에 로드, 실행
- 프로세스 속성 값 확인, 지정
- wait 이벤트, signal 이벤트
- 메모리 할당
- 예) fork, wait, exec 등
- file maniplation → OS의 기본기능
- 파일 생성, 파일 삭제
- 열기, 닫기
- 읽기, 쓰기, Reposition
- 파일 속성 값 확인, 지정
- 예) open, read, write, close 등
- device management (ex. printf, scanf)
- 디바이스 요청 및 해제
- 읽기, 쓰기, Reposition
- 디바이스 속성 확인, 지정
- 비 물리적인 디바이스 해제 및 장착
- Information maintenauce (ex 지금 hard disk가 얼마나 찼는지)
- 시간 확인, 시간 지정
- 시스템 데이터 확인, 지정
- 프로세스, 파일, 디바이스 속성 가져오기
- 프로세스, 파일, 디바이스 속성 설정하기
- communication
- 커뮤니케이션 연결 생성 및 삭제
- 메시지 송신, 수신
- 상태 정보 전달
- remote 디바이스 해제 및 장착
- protection 등
- Permission 획득
- Permission 설정
2. 구현
- 시스템 호출 인터페이스는 OS kernel에서 의도된 시스템 호출을 호출하고 시스템 호출의 상태와 모든 반환 값을 반환.
3. system call에서 parameter 전달방법
- register에 넣어서 전달 (단점: 갯수의 제한)
- memory 상에 table이나 block에 저장하고 시작위치를 register에 넣어 전달
- stack에 넣어서 전달
📍 System Programs
: OS를 깔았더니 이미 깔려있는 프로그램들 (기본적으로 깔려있는 것)
분류
- File manipulation
- createm delete, copy … etc
- Status information
- sometimes stored in a File modification
- 일부는 시스템에 날짜, 시간, 사용 가능한 메모리 양, 디스크 공간, 사용자 수 등의 정보를 요청
- 일부 시스템은 구성 정보를 저장하고 검색하는 데 사용되는 registry를 구현
- Programming language support
- OS program으로 보지는 않음
- compiler로 분류됨 (compiler를 OS로 보지는 않음)
- Program loading and execution
- Communications
- Background services
- booting 시 실행
- 일부는 시스템 시작 후 종료
- 일부는 시스템 부팅부터 종료까지
- 디스크 검사, 프로세스 예약, 오류 기록, 인쇄와 같은 기능 제공
- user context에서 실행
- services, subsystems, daemons로 알려져 있음
- demons: 실행 안 시켜도 계속 돌아가고 있는. 부팅될때 시작됨
- Application programs
📍 OS design goals
1. user’s goals
- 사용의 편리성
- 배우기 쉽다
- reliable (신뢰성) - 고장이 나지 않아야 함
- safe (안전성)
- fast (속도)
2. system goals
- easy to
- design (설계)
- implentation (구현)
- maintenauce (유지, 보수)
- flexible (융통성, 유연성) - 상황에 따라 대응가능
- efficient (효율성)
- reliable (신뢰성)
- error free