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을 사용한다
0과 1, 2가지 모드를 지원한다
->mode bit이 0일 때 아무거나 CPU에서 실행이 되고 CPU를 운영체제가 사용자 프로그램으로 넘겨줄 때는
1로 바꾸어서 넘겨주기 때문에 한정된 instruction만 실행할 수 있다.
-registers
-timer : 특정 프로그램에 시간을 할당하여 CPU를 독점할 수 없게 한다
-> OS가 CPU를 할당 받고, 사용가능한 시간이 지나면 다음 프로그램으로 제어권이 넘어가거나 종료되는 구조이다
Disk & I/O device
Device Controller
I/O device controller
해당 입출력 장치 유형을 관리하는 일종의 작은 CPU이다
제어 정보를 위해 control register, status register를 가진다
local buffer를 가진다
I/O(입출력)는 실제 device와 local buffer 사이에서 일어난다
Device controller는 I/O가 끝났을 경우 CPU에 끝났다는 사실을 알린다.
device driver(장치 구동기)
-> 각 장치별 처리 루틴 ->software
device controller(장치 제어기)
-> 일종의 작은 CPU -> hardware
CPU – Memory간 상호작용
I/O device는 local buffer에 내용을 할당하고 일정량 이상 쌓이면
CPU가 내용을 읽어서 자신의 작업영역인 Memory에 복사를 한다
인터럽트(Interrupt)
인터럽트 발생 시점의 레지스터와 program counter를 저장 후
CPU의 제어를 인터럽트 처리 루틴에 넘긴다
현대의 운영체제는 인터럽트에 의해 구동된다
하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트
I/O 요청 처리 후 사용된다
소프트웨어 인터럽트(Trap)
Exception : 프로그램이 오류를 범한 경우
System call : 프로그램이 커널 함수를 호출하는 경우
I/O 요청시 사용한다
인터럽트 벡터 : 해당 인터럽트 처리 루틴의 주소를 가지고 있음을 의미한다
인터럽트 처리 루팅 : 해당 인터럽트를 처리하는 커널 함수를 의미한다
Interrupt가 많이 발생하면 성능이 저하된다
-> DMA controller를 사용, 직접 메모리를 접근할 수 있다
memory controller : CPU와 DMA 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 |