운영체제(Operating System)
: 컴퓨터 하드웨어 바로 위에 설치되어 다른 소프트웨어들과 하드웨어를 연결하는 소프트웨어 계층
운영체제 목적
1. 컴퓨터 시스템의 자원을 효율적으로 관리(프로세서,기억장치,입출력 장치 등) -> 주어진 자원으로 최대한의 성능을 내도록 사용자간 형평성있는 자원 분배
2. 사용자가 시스템을 편리하게 사용할 수 있는 환경을 제공
-> 동시 사용자들이 각각 독자적 컴퓨터에서 수행되는 것처럼 빠르게 처리
운영체제 분류
기준1. 동시작업 가능 여부
단일작업-> ex)MS-DOS / 다중작업(multi-tasking) -> ex)UNIX , MS windows
기준2. 사용자 수
단일 사용자 -> MS-DOS, MS Windows / 다중 사용자 -> UNIX
기준3. 처리방식
일괄처리(batch processing) - 작업을 모아서 한꺼번에 처리/ 시분할(time sharing) - 여러작업 수행 시 컴퓨터가 일정한 시간 단위로 분할하여 사용/ 실시간(Realtime OS) - 정해진 시간 안에 반드시 결과가 나와야 할 때 ex)미사일 제어/ 반도체 장비
운영체제의 예
1. 유닉스(UNIX)
- 코드의 대부분이 c언어
- 높은 이식성
- 오픈소스
- 프로그램 개발에 용이
- 최소한 커널 구조
- 다양한 버전 : System V, SunOS, Solaris, Linux
2. DOS
- MS사에서 IBM-PC를 위해 개발
- 단일 사용자용 운영체제, 메모리 관리 능력의 한계
3.MS Windows
-MS사의 다중 작업용 GUI기반 운영 체제
-DOS용 응용프로그램과 호환성 제공
-풍부한 자원 소프트웨어
컴퓨터 시스템 구조
*mode bit
mode bit: cpu가 실행될 때 운영체제인지 사용자 프로그램인지를 구분해주는 역할
mode bit이 0일 때 운영체제가 가지고 있다는 의미, 0일 때에만 IO에 접근할 수 있도록 한다. 사용자 프로그램을 수행하는사용자 모드일 경우에는 보안문제로 IO장치나 다른 메모리에 접근하지 못하도록 막는다.
사용자 프로그램은 운영체제에게 I/O를 요청하는 것은 System call이라고 한다.
*Timer
Timer는 특정 프로그램이 cpu를 독점하는 것으로부터 보호하기 위해 일정 시간만 사용할 수 있도록 관리하는 역할을 한다. Time sharing을 구현하기 위한 역할을 담당한다.
*device controller
device controller는 각 장치를 통제하는 일종의 작은 cpu로, 제어 정보를 위해 register를 가지며, 실제 data가 저장되는 작업 공간인 local buffer를 가진다. device Controller는 I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알린다.
*interrupt
인터럽트 당한 시점의 레지스터와 program counter를 save한 후 cpu의 제어를 인터럽트 처리 루틴에 넘긴다.
인터럽트는 하드웨어 인터럽트(IO가 일을 다 끝내고 cpu에게 인터럽트를 걸 때)와 소프트웨어 인터럽트(IO를 요청하기 위해 system call을 보낼 때/프로그램이 오류를 범한 경우(Exception)- 0으로 나누는 연산을 한 경우)로 나뉘고, 소프트웨어 인터럽트를 Trap으로 부른다.
*CPU
메모리에 올라온 기계어(cpu instruction)을 읽어서 실행하는 역할을 한다. 프로그램 카운터(PC)라는 레지스터가 가리키는 인스터럭션 주소를 따라가 실행된다.(cpu가 접근하기 위해서는 바이트 단위여야 함.)
*DMA(Direct Memory Access)
메모리 접근은 cpu만 가능한데, IO장치가 다양하기 때문에 인터럽트가 빈번해서 오버헤드가 커지기 때문에 DMA Controller가 메모리에 접근할 수 있도록 해서 buffer에 담긴 내용을 메모리에 복사하는 일까지 해주고 인터럽트를 걸어주어 인터럽트 빈도수를 줄일 수 있도록 해준다.
*caching
더 빠른 저장 장치에 정보를 복사해서 저장하는 작업
파일 시스템에 담긴 실행파일이 실행되면 각 프로세스만의 독자적인 Address space가 생긴다. 기계어 코드를 담고있는 code영역, 변수들을 담는 자료구조인 data영역, 코드에 있는 함수를 호출할 때 쌓아가고 꺼내가는 stack영역이 있다. virtual memory는 프로그램이 실행될 때만 메모리에 올라갈 수 있으며, 필요한 부분만 올라갈 수 있다. 당장 필요하지는 않지만 사용할 가능성이 있는 경우 Swap area에 내려 놓을 수 있다.
강의
'운영체제' 카테고리의 다른 글
Deadlock (0) | 2021.06.29 |
---|---|
Process Synchronization (0) | 2021.06.28 |
CPU Scheduling (0) | 2021.06.28 |
프로세스 생성 (0) | 2021.05.15 |
운영체제 프로세스 (0) | 2021.05.14 |