티스토리 뷰
- 참고 도서는 'Operating System Concepts 8th' 입니다. (포스팅 하단부 참고)
- 개인공부 후 자료를 남기기 위한 목적으로 포스팅합니다. 내용 상에 오류가 있을 수 있습니다.
1.4 운영체제의 구조
운영체제는 프로그램이 실행될 환경을 제공한다. 운영체제는 다양하게 발전되어 와기 때문에 내부 구조는 매우 다양하다. 운영체제의 가장 중요한 측면은 다중 프로그래밍(multiprogramming)을할 수 있는 능력이다. 일반적으로 단일 사용자가 CPU나 I/O 장치를 항상 바쁘게 유지시키기 어렵다. 다중 프로그래밍을 통해 여러 개의 프로그램을 동시에 주기억장치(RAM)에넣고 CPU를 분할 사용한다. 이는 항상 하나의 작업을 실행할 수 있게 만들어주며, 이를 통해 CPU 효율성을 증대한다.
다중 프로그래밍 시스템을 위한 메모리 배치
비 다중 프로그래밍(non-multiprogramming) 시스템보다 다중 프로그래밍 시스템이 더 효율적이다. 비 다중 프로그래밍 시스템의 경우 입출력과 같은 프로세서가 대기하는 시간동안 다른 작업을 처리할 수 없지만 다중 프로그래밍 시스템의 경우 대기 시간동안 다른 작업으로 전환해 해당 작업을 처리할 수 있다. 따라서 실행할 작업이 하나라도 있는 이상 프로세서(CPU)는 쉬지 않는다. (=효율성 증가)
또다른 운영체제의 기능으로 시분할 시스템(Timesharing)이 있다. 나에게는 멀티테스킹(Multi-tasking) 이란 용어로 더 익숙하다. 기본적으로 시분할 시스템은 다중 프로그맹의 논리적 확장 개념이다. 프로세서는 다수의 작업을 교대로 실행하지만 매우 빠른 속도로 교대가 이루어지기 때문에 실제 사용자는 모든 작업이 동시에 처리되는 것 처럼 느껴진다. -> 응답 시간(Response time)이 짧다.
시분할 시스템에서 각 사용자는 최소한 하나의 프로그램을 가지며 이를 프로세스(process)라 칭한다. 여러 작업의 준비상태 처리하기 위해 CPU 스케줄링(CPU scheduling)를 사용하며, 이러한 기능과 다중 프로그래밍을 함께 사용하므로써 프로세서(CPU)의 효율성을 극대화 한다. 결국 Time-sharing = CPU Scheduling + Multiprogramming
여러 사용자의 프로세스를 처리하면서 메모리가 부족한 경우가 발생할 수 있다. 이 때 운영체제는 보조기억장치로 스왑인, 혹은 스왑아웃한다. (스와핑, swapping) 좀 더 일반적인 방법으로 가상 메모리(Virtual memory)가 있다.
1.5 운영체제 동작 (Operating System Operation)
현대 운영체제는 인터럽트 구동식(interrupt driven)이다. 아무런 작업이 예정되어 있지 않다면 운영체제 역시 아무런 작업 없이 조용히 대기한다. 결국에는 인터럽트(Interrupt, H/W가 요청)나 트랩(Trap, S/W가 요청하거나 오류로 인해 발생, 어찌됬건 트랩도 인터럽트긴 함)을 발생시켜 신호를 보낸다.
1.5.1 이중 동작 모드 (Dual-Mode Operation)
교수님이 중요하다고 찍어 주셨던 이중 동작 모드다. 이중 동작 모드란 운영체제가 두 개의 독립된 동작 모드, 사용자 모드(User Mode)와 커널 모드(Kernel Mode, Supervisor Mode, Privileged Mode 다 같은 말)로 돌아가는 것을 말한다. 하드웨어에 모드 비트(Modie bit)란 놈이 있는데 이게 0이면 커널 모드, 1이면 사용자 모드다.
최초에 부팅시 하드웨어는 커널 모드에서 시작한다. 운영체제가 올라오고, 여기서 부터 사용자 모드가 시작된다. 인터럽트 또는 트랩이 발생할 때마다 하드웨어는 모드 비트를 0으로 바꾸고 커널 모드로 전환한다.
사용자 모드에서 커널 모드로의 전환
이중 모드가 필요한 이유를 생각해 보면 아무래도 시스템 및 사용자를 보호하기 위함이 아닌가 싶다. 흔히 시스템 콜(system call, 시스템 호출이라고도 함)이라 불리는 막강한 커널 명령어는 사용자 서로에게 뿐만 아니라 시스템에도 치명적인 영향을 미칠 수 있다. 이런 기능들이 불법 사용자로 인해 실행된다면 시스템에 손상을 미칠 수도 있다. 만약 이렇게 사용자 모드에서 특권 명령(privileged instruction, 시스템에 악영향일 끼칠수 있는 일부 명령)을 실행하려고 시도하면 운영체제는 이를 실행하지 않고 트랩을 건다.
사용자 모드(User mode)에서 트랩이 걸리는 몇 가지 경우
사용자 모드에서 특권 명령 실행 시도,
프로그램이 사용자 영역의 메모리 공간이 아닌 곳에 접근을 시도 등
1.5.2 타이머 (Timer)
타이머는 운영체제가 무한 루프(infinite loop) 또는 프로세스가 시스템의 자원을 독차지 하는 것을 방지하기 위해 사용된다. 타이머는 지정된 시간 후 인터럽트를 발생시킬 수 있다.
1.6 프로세스 관리 (Process Management)
프로세스(Process)는실행 중인 프로그램(Program)을 의미한다. 프로그램이 실행 중이란 얘기는 보조기억장치(HDD)에 저장되어 있는 프로그램이 주기억장치(RAM)로 적재되었고 프로세서(CPU)가 주기억장치로 부터 해당 프로그램의 명령어를 읽어 실행 중이란 뜻이다. 즉, 하나의 프로그램은 디스크에 저장된 파일의 내용과 같이 수동적(passive)인 반면, 프로세스는 다음 실행할 명령의 위치를 가진 프로그램 카운터(PC, program counter)를 가진 능동적(active)인 개체다.
운영체제는 프로세스 관리를 위해 다음과 같은 활동을 한다.
프로세서(CPU)에게 프로세스와 스레드 스케줄링
사용자 프로세스와 시스템 프로세스의 생성과 제거
프로세스의 일시 중지와 재실행
프로세스 동기화를 위한 기법 제공
프로세스 통신을 위한 기법 제공
여기까지가 2014년 1학기 운영체제 과목 중간고사 범위. 아래로 부턴 단순 다열. 기말고사 때 다시 쓸 예정
1.7 메모리 관리
1.8 저장장치 관리
1.8.1 파일 시스템 관리
1.8.2 대용량 저장장치 관리
1.8.3 캐싱
1.8.4 입출력 시스템
1.9 보호와 보안
1.10 분산 시스템
1.11 전용 시스템
1.11.1 실시간 내장형 시스템
1.11.2 멀티미디어 시스템
1.11.3 휴대용 시스템
1.12 계산 환경
1.12.1 전통적 계산
1.12.2 클라이언트 서버 계산
1.12.3 피어 간 계산
1.12.4 웹 기반 컴퓨팅
1.13 오픈소스 운영체제
1.13.1 역사
1.13.2 Linux
1.13.3 BSD Linux
1.13.4 Solaris
1.13.5 유틸리티
1.14 요약
컴퓨터가 프로그램을 실행하려면 프로그램이 주 메모리에 있어야 한다.
주기억장치(주 메모리)는 전원이 꺼지거나 중단되면 그 내용을 잃게 되는 휘발성 저장장치이다.
보조기억장치(보조 저장 장치)는 대용량의 데이터를 영원히 보존할 수 있는 비휘발성의 저장장치이다.
단일처리기 시스템은 하나의 프로세서만을 가지는 반면, 다중처리기 시스템은 물리 메모리 및 주변장치들을 공유하는 둘 이상의 프로세서를 가지고 있다.
다중 프로그래밍에서는 한 번에 여러 작업들이 메모리에 유지된다.
하드웨어는 두 가지 모드, 사용자 모드와 커널 모드를 가진다.
운영체제가 저장되어 있는 메모리는 사용자에 의한 변경으로부터 보호되어야 한다.
타이머는 무한 루프로 인한 문제를 방지한다.
프로세스는 운영체제에서 일의 기본적인 단위이다.
Operating System Concepts
- 저자
- Abraham Silberschatz, Peter B. Galvin, Greg Gagne 지음
- 출판사
- 홍릉과학출판사 | 2013-02-15 출간
- 카테고리
- 컴퓨터/IT
- 책소개
- 『Operating System Concepts』는 9개의 주요...
'컴퓨터공학' 카테고리의 다른 글
운영체제 05 : 시스템 프로그램 (System Programs) (0) | 2014.04.29 |
---|---|
운영체제 04 : 시스템 콜 (시스템 호출, System Call) (0) | 2014.04.28 |
운영체제 03 : 운영체제 서비스, 사용자 인터페이스 (0) | 2014.04.27 |
운영체제 01 : 운영체제 과목 전체 개요 - 1 (2) | 2014.04.20 |
자료구조 02 : 선택 정렬 (Selection Sort) (3) | 2014.04.18 |
CentOS 6.5 리눅스에 JSP 서비스를 위한 Tomcat 설치하기 (25) | 2014.04.11 |
CentOS 6.5 리눅스에 JSP 서비스를 위한 JDK 설치하기 (9) | 2014.04.10 |