[ Operating System ] 운영체제
운영체제
1. 역할
컴퓨터의 하드웨어 제어
컴퓨터 프로그램 제어
사용자와 컴퓨터 간 커뮤니케이션 지원
2. 인터페이스
- 사용자 인터페이스
- Shell(애플리케이션) -> 터미널, GUI 제공
- 응용프로그램 인터페이스 제공
- API(Application programming interface) : 함수로 제공 (ex) ‘open()’ 함수 등)
- 라이브러리(일반적 경우) : ex) C 라이브러리
- 시스템 콜 (시스템 호출 인터페이스)
- 운영체제가 운영체제의 각 기능을 사용할 수 있도록 ‘시스템 콜’이라는 명령(함수)를 제공(Application이 API라는 요청서를 사용, O.S에 명령)
- API 내부는 시스템 콜 호출하는 형태로 대부분 구성
CPU 사용 권한
사용자 모드(Application 사용 시 CPU 사용)
커널 모드(O.S가 CPU 사용: 특수 자원 접근)
- 시스템 콜은 커널 모드로만 실행하여, 응용프로그램이 컴퓨터 시스템 무단 접근 방지
- 커널 모드로 실행하려면 반드시 시스템 콜을 거쳐야하고 시스템 콜은 운영체제가 제공
3. 프로세스 스케쥴링
- 배치 프로세싱 : 자동으로 다음 응용프로그램이 이어서 실행될 수 있도록 하는 시스템 (FIFO(선입선출)형태)
시분할 시스템: 응용프로그램이 CPU를 사용하는 시간을 잘게 쪼개어 실행될 수 있도록 하는 시스템
멀티테스킹: 단일 CPU에서 여러 응용프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템(시분할 시스템과 동일)
멀티프로그래밍: 최대한 CPU를 많이 활용하는 시스템
- 시간 대비 CPU활용도를 높임
- 응용프로그램을 짧은 시간 안에 완료할 수 있음
※ 멀티테스킹 VS 멀티프로세싱
- 멀티테스킹: 단일 CPU
- 멀티프로세싱: 여러 CPU에 하나의 프로그램을 병렬로 실행시켜 실행 속도 극대화
※ 실제로는 시분할 시스템, 멀티프로그래밍, 멀티테스킹이 유사한 의미로 통용
4. 스케쥴링 알고리즘
1) 프로세스
= 작업, task, job
- 응용프로그램 != 프로세스
- 응용프로그램은 여러 개의 프로세스로 이루어질 수 있음
- C/C++로 프로그램 제작 -> 1개 프로세스
- 여러 프로그램끼리 통신 -> 다중 프로세스
- 스케쥴러가 프로세스를 관리
2) 스케쥴링
어떤 순서로 프로세스 실행할지 (목표 : 시분할 시스템, 멀티프로그래밍)
FIFO 스케쥴러 : 먼저 들어온 프로세스부터 CPU에서 처리(배치 프로세싱과 같음,queue)
SJF(Shortest job First) 스케쥴러 : 가장 프로세스 실행시간이 짧은것부터 실행
- 우선순위 기반 스케쥴러
- 정적 우선순위 : 프로세스마다 우선순위를 미리 지정
- 동적 우선순위 : 스케쥴러가 상황에 따라 우선순위를 동적으로 변경
- RoundRObin 스케쥴러
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.