CS지식/운영체제

TIL 정리_68

ran4 2022. 4. 24. 18:44

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

운영체제 강의를 듣고 정리한 내용입니다

 

 

운영체제 용어

Multitasking : 여러 작업이 동시에 실행된다

Multiprogramming : 메모리에 여러 프로그램이 동시에 올라가는 방식이다

Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미로 자주 사용된다

Multiprocess

-> 위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다

 

Multiprocessor : 하나의 컴퓨터에 CPU가 여러 개 붙어 있음을 의미한다

예) CPU가 여러 개 있는 고성능 시스템

 

 

운영체제의 예시

유닉스(UNIX) : 대형 컴퓨터를 위한 것

- 코드의 대부분을 C언어로 작성한다 //이 운영체제를 다루기 위해 C언어를 만들었다

- 소스 코드가 공개되어있어, 누구나 자유롭게 사용하고 참조할 수 있다.

- 높은 이식성과 최소한의 커널구조를 갖고 있다

 

- 복잡한 시스템에 맞게 확장이 용이하다

->프로그램 개발에 용이하다

 

- 다양한 버전을 가지고 있다

-> System V, FreeBSD, SunOS, Solaris

-> Linux //서버와 개인 모두 사용가능하다

 

 

MS계열 운영체제 : 개인 컴퓨터를 위한 것

MS-DOS : 단일 사용자용 운영체제, 메모리 관리 능력의 한계가 있다.

 

MS Windows

-MS사의 다중 작업용 GUI 기반 운영 체제

-네트워크 환경 강화 및 DOS용 응용 프로그램과의 호환성 제공

-풍부한 지원 소프트웨어

->초창기에는 불안정성도 있었지만 최근의 OS는 개선되었다

 

 

컴퓨터 시스템 구조

CPU

memory

Disk | I/O device 의 구조로 이루어져 있다

CPU 스케줄링 : 어떤 메모리에 CPU를 할당할지 정한다

->먼저 온 순서대로 처리가 아닌 효율적인 처리를 중시한다

메모리 관리 : 한정된 메모리를 어떻게 쪼개어 사용할지 고려한다

자주 사용하는 메모리는 저장하고 사용량이 적은 메모리는 삭제한다

 

 

CPU

-interrupt line : CPU는 메모리와 상호작용 한다 -> 메모리에서의 상호작용 내용을 CPU에 연결한다

-mode bit : CPU를 가지고 있는 것이 운영체제인지 사용자 프로그램인지 구분한다

사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호장치가 필요하다

->mode bit을 사용한다

01, 2가지 모드를 지원한다

->mode bit0일 때 아무거나 CPU에서 실행이 되고 CPU를 운영체제가 사용자 프로그램으로 넘겨줄 때는

1로 바꾸어서 넘겨주기 때문에 한정된 instruction만 실행할 수 있다.

 

-registers

-timer : 특정 프로그램에 시간을 할당하여 CPU를 독점할 수 없게 한다

-> OSCPU를 할당 받고, 사용가능한 시간이 지나면 다음 프로그램으로 제어권이 넘어가거나 종료되는 구조이다

 

Disk & I/O device

Device Controller

I/O device controller

해당 입출력 장치 유형을 관리하는 일종의 작은 CPU이다

제어 정보를 위해 control register, status register를 가진다

local buffer를 가진다

I/O(입출력)는 실제 devicelocal buffer 사이에서 일어난다

Device controllerI/O가 끝났을 경우 CPU에 끝났다는 사실을 알린다.

 

 

device driver(장치 구동기)

-> 각 장치별 처리 루틴 ->software

device controller(장치 제어기)

-> 일종의 작은 CPU -> hardware

 

CPU Memory간 상호작용

I/O devicelocal buffer에 내용을 할당하고 일정량 이상 쌓이면

CPU가 내용을 읽어서 자신의 작업영역인 Memory에 복사를 한다

 

 

인터럽트(Interrupt)

인터럽트 발생 시점의 레지스터와 program counter를 저장 후

CPU의 제어를 인터럽트 처리 루틴에 넘긴다

현대의 운영체제는 인터럽트에 의해 구동된다

하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트

I/O 요청 처리 후 사용된다

 

소프트웨어 인터럽트(Trap)

Exception : 프로그램이 오류를 범한 경우

System call : 프로그램이 커널 함수를 호출하는 경우

I/O 요청시 사용한다

 

인터럽트 벡터 : 해당 인터럽트 처리 루틴의 주소를 가지고 있음을 의미한다

인터럽트 처리 루팅 : 해당 인터럽트를 처리하는 커널 함수를 의미한다

 

Interrupt가 많이 발생하면 성능이 저하된다

-> DMA controller를 사용, 직접 메모리를 접근할 수 있다

 

memory controller : CPUDMA controller의 동시 접근으로 인한 충돌을 막아준다

 

입출력의 수행

-모든 입출력 명령은 특권 명령이다

 

사용자 프로그램은 어떻게 입출력을 하는가?

-시스템 콜(System call)

사용자 프로그램이 운영체제에게 I/O를 요청한다 

-trap을 사용하여 인터럽트 벡터의 특정 위치로 이동

-제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동

-올바른 I/O 요청인지 확인 후 수행

-> 완료 시 제어권을 시스템 콜 다음 명령으로 옮긴다

'CS지식 > 운영체제' 카테고리의 다른 글

TIL 정리_73  (0) 2022.04.30
TIL 정리_72  (0) 2022.04.29
TIL 정리_71  (0) 2022.04.28
TIL 정리_70(운영체제)  (0) 2022.04.27
TIL 정리_67(운영체제)  (0) 2022.04.23