목차
1. 공개 소프트웨어 / 비공개 소프트웨어
공개 소프트웨어
Linux, Android
비공개 소프트웨어
Windows
소프트웨어 시장은 1위가 독점하는 시장이다. 따라서 2위도 힘들게 만들었지만, 소비자들에게 판매를 할 수 없는 상황이 생긴다. 이에 오픈소스로 공개를 하는 소프트웨어가 생겨났다.
2. 운영체제란?
정의
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
협의의 운영체제(커널)
운영체제의 핵심 부분으로 메모리에 상주하는 부분
광의의 운영체제
커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
목적
1. 운영체제는 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다.
2. 하드웨어를 직접 다뤄야하는 복잡한 부분을 운영체제가 대행해준다.
3. 컴퓨터 시스템의 자원을 효율적으로 관리해준다.
- 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
- 사용자 및 운영체제 자신을 보호
- 프로세스, 파일, 메시지 등을 관리
여러개의 프로그램이 동작해 메모리 공간을 쓸 때 1/N으로 하는 것이 아니고, 프로그램에 따라 효율적으로 할당해야 하는데, 이러한 역할을 운영체제가 담당한다.
분류
동시 작업 가능 여부
1) 단일 작업(single tasking)
ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음.
2) 다중 작업(multi tasking)
ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음.
사용자의 수
1) 단일 사용자
2) 다중 사용자
처리 방식
1) 일괄 처리(batch processing)
- 작업 요청의 일정량 모아서 한꺼번에 처리
- 작업이 완전 종료될 때까지 기다려야 함
2) 시분할(time sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
3) 실시간(Realtime OS)
- 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- ex) 원자로/공장/미사일 제어 등등 (death line 필수)
3. Mode bit, Timer
Mode bit
위험한 코드를 짜 프로그램을 만들면 코드가 동작하지 않아야 합니다. 하지만 CPU할당은 운영체제에서 프로그램으로 넘어간 상태이므로 운영체제가 조절하긴 힘듭니다. 이런 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 보호장치가 필요한데 이를 mode bit이라고 합니다.
운영체제는 사용자프로그램으로 CPU를 넘길 때 mode bit을 1로 바꿔서 넘깁니다. 이렇게 구분하여 보안을 해칠 수 있는 등의 중요한 명령어는 운영체제의 권한 하에서만 실행되도록 합니다.
Timer
사용자 프로그램이 메모리를 무한으로 할당하게 하거나, 무한 루프를 돌게 하는 식으로 해버리는 경우도 조정이 필요합니다. 이를 위해 타이머가 존재합니다.
- 정해진 시간이 흐른 뒤엔 운영체제에 제어권이 넘어가도록 인터럽트를 발생시킵니다.
- 타이머는 매 클럭 틱 때마다 1씩 감소합니다.
- CPU를 특정 프로그램이 독점하는 것으로부터 보호합니다.
4. 인터럽트
인터럽트 Timer에서 일정 시간이 지났을 때, 키보드 등 I/O 장치에서의 작업이 다 끝났을 때 등에 CPU에 전달되는 알림입니다. CPU는 다음 기계어를 실행하기 전에 항상 interrupt가 들어왔는지를 체크하기 때문에 interrupt가 오는 것을 체크할 수 있습니다. interrupt를 CPU가 인식하면 OS에 할당합니다
시스템 콜
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것.
예를 들어, I/O 장치에 대한 기계어 명령은 특권명령을 할 수 있는 운영체제밖에 못합니다. 따라서 이러한 경우 사용자 프로그램은 운영체제에게 부탁하기 위해 스스로 인터럽트를 거는데, 이러한 것을 시스템 콜이라고 합니다.
용어
1) 인터럽트 벡터
- 인터럽트 종류별로 CPU가 실행해야 하는 동작이 다를 것이다. 따라서 이를 구분해주어야 합니다. 이를 구분하기 위해선 어떤 곳에서 인터럽트가 왔는지를 알아야하는데, 바로 그 인터럽트의 주소를 가지고 있는 것이 인터럽트 벡터입니다.
2) 인터럽트 처리 루틴
- 주소에 따라 어떤 동작을 해야하는지가 들어있는 인터럽트 처리 커널 함수입니다.
동기식 입출력과 비동기식 입출력
1) 동기식 입출력 (synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어갑니다. 그 동안 사용자 프로그램은 아무것도 안하고 기다립니다.
2) 비동기식 입출력 (asynchronous I/O)
- I/O 요청 후 제어가 다른 프로그램으로 넘어가는 것이 아니라, 그 동안 사용자 프로그램은 CPU를 할당받아 I/O와 무관한 다른 일을 하다가 I/O 출력을 받습니다.
5. DMA(Direct Memory Access)
Interrupt 자체도 사실 오버헤드의 일종입니다. 물론 I/O 등 대부분의 인터럽트는 CPU 처리속도에 비해 느리므로 별 의미가 없을 순 있지만, 빠르게 동작하는 I/O도 있습니다. 빠르게 동작하며 Interrupt를 수없이 발생시키면 CPU의 오버헤드는 커질 수 있을 것입니다. 이를 해결하기 위해 DMA라는 것이 등장하였습니다.
특징
- 빠른 입출력 장치를 메모리에 가까운 처리하기 위해 사용
- CPU 중재 없이 DMA controller 가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
- 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴
I/O 장치는 각각의 buffer storage 내용을 담아 interrupt 와 함께 CPU에 전송합니다. CPU는 I/O로부터 interrupt를 받아 buffer storage의 내용을 복사해 메모리에 옮겨놓습니다. 이러한 CPU의 동작을 돕는 DMA는 잦고 사소한 interrupt를 block 단위까지 모으고 CPU 대신 buffer storage의 내용을 메모리로 직접 옮겨놓습니다. 이 후 다시 interrupt를 통해 CPU에게 일처리가 끝났음을 알려줍니다.
본 포스팅은 kowc 이화여대 반효경 교수님 운영체제 강의를 바탕으로 작성하였습니다.
http://www.kocw.net/home/search/kemView.do?kemId=1226304&ar=relateCourse
'CS > 운영체제' 카테고리의 다른 글
[운영체제] process Synchronization 문제 (0) | 2022.07.17 |
---|---|
[운영체제] Process Synchronization 1 (0) | 2022.07.16 |
[운영체제] CPU 스케줄링 (0) | 2022.06.13 |
[운영체제] 프로세스 관리 (0) | 2022.06.07 |
[운영체제] cpu스케줄링, 메모리 관리, 디스크 스케줄링 (0) | 2022.05.31 |