본문 바로가기

운영체제

운영체제 개요

운영체제(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

더 빠른 저장 장치에 정보를 복사해서 저장하는 작업

 

 

 

출처: https://eunhyejung.github.io/os/2018/06/30/operatingsystem-study03.html

 

 

 

 

 

파일 시스템에 담긴 실행파일이 실행되면 각 프로세스만의 독자적인 Address space가 생긴다. 기계어 코드를 담고있는 code영역, 변수들을 담는 자료구조인 data영역, 코드에 있는 함수를 호출할 때 쌓아가고 꺼내가는 stack영역이 있다. virtual memory는 프로그램이 실행될 때만 메모리에 올라갈 수 있으며, 필요한 부분만 올라갈 수 있다. 당장 필요하지는 않지만 사용할 가능성이 있는 경우 Swap area에 내려 놓을 수 있다.

 

 

 

 

 

 

 

강의

www.kocw.net/home/search/kemView.do?kemId=1046323

'운영체제' 카테고리의 다른 글

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