일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 구글
- techEmpower
- 안드로이드
- it
- 번역
- Portfolio
- error
- 한글
- 개발자
- php
- 개발
- caddy
- C
- ubuntu
- 자바
- 해석
- C lanuage
- MySQL
- android
- NGINX
- 프래그먼트
- 컴퓨터과학총론
- javascript
- java
- unity
- centOS7
- kakao
- H2O
- server
- mariadb
- Today
- Total
개발모음집
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 03 운영체제 본문
1. 운영체제
컴퓨터의 전반적인 운영을 제어하는 소프트웨어이다.
1) 운영체제의 구조
운영체제의 구성요소
커널: 운영체제 내부, 컴퓨터가 필요로 하는 가장 기본적인 기능들을 수행하는 소포트웨어 요소들을 포함한다.
(파일관리자, 장치 관리자, 메모리 관리자, 일정 관리자, 실행관리자)
셸: UI (커널을 감싸고 있음, text 메세지를 통해 사용자와 대화하는 프로그램
요즘은 GUI로 대화, 대표적인 프로그램은 '윈도우 관리자'
* 참고
페이징: 메모리관리자가 하는 일
멀티태스킹이면 RAM의 일이 늘어난다.
필요한 주기억장치는 8GB인데, 실제 컴퓨터에는 4GB가 있다면 메모리관리자는 보조 기억장치에 8GB만큼의 저장 공간을 예약해두고 사용한다. 이러한 데이터는 페이지라고 불리는 일정한 크기의 단위로 분할된다.
이 때 메모리관리자는 필요한 페이지들이 실제로 4GB의 주기억장치안에 들어 있도록 하기 위해 이 페이지들을 주기억장치와 대용량 저장장치 사이에서 옮기는 작업을 반복하게 된다. 이것을 페이징이라고 한다.
그리고 이러한 가상적인 큰 기억공간을 '가상 메모리'라고 부른다.
펌웨어(firmware): 특정 하드웨어 장치(rom(read-only memory))에 포함된 소프트웨어로, 소프트웨어를 읽어 실행한다.펌웨어 시스템으로 바이오스가 있다.
펌웨어 루티은 운영체제가 기능할 수 있기 전 상태에서 부트 로더가 입출력 활동들을 수행하기 위해 사용할 수 있다.
2) 운영제체의 시동(boot strapping or booting)
부팅: 컴퓨터 전원을 켤 때 수행하는데, 대용량 저장장치에 영구적으로 저장되어 있는 운영체제를 전원이 켜질 때 비어있는 상태의 주기억장치로 옮기는 작업이 바로 부팅 절차이다.
자세한 부팅절차와 필요한 이유를 설명하기 위해 cpu에 대해 설명해야한다.
cpu에 전원이 들어올 때마다 프로그램 카운터는 미리 정해져 있는 특정 주소를 가리키도록 cpu가 설계되어 있다. 그 특정 주소는 cpu가 실행될 프로그램의 시작 위치로 생각하는 주소이다. 따라서 운영체제를 이 위치에 저장해 두기만 하면 된다.
그러나 기술적 이유로 컴퓨터의 주기억장치는 대개 휘발성 메모리로 만들어져 있는데. 이는 컴퓨터가 꺼지면 모든 데이터가 지워짐을 의미한다.
따라서 컴을 다시 켤 떄마다 주기억장치의 내용을 다시 채우는 방법이 필요하다.
이 문제를 해결하기 위해, 주 기억장치의 작은 부분에 특별한 비휘발성 메모리 셀을 사용한다.
쉽게 설명하자면,
주기억장치의 ROM부분에 부트로더를 설치해두고 전원이 켜졌을 때 ssd나 hdd에 설치된 운영체제를 주기억장치안에 가져오는 것을 부팅이라고 한다.
3) 컴퓨터 활동의 조정
프로세스의 개념:
프로그램은 명령들의 정적인 집합인 반면
프로세스는 그 프로그램을 실행은 시간의 경과에 따라 성질이 변하는 동적인 활동이다. 마치 프로그램은 클래스, 프로세스는 객체같다.
시분할/멀티태스킹 컴퓨터에서는 실행 중인 여러 프로세스들이 컴퓨터 자원을 이용하기 위해 경쟁한다. 그래서 서로 방해하지 않고, 정보를 교활할 필요가 있는 프로세스들이 그렇게 할 수 있도록 프로세스들을 관리하는 것이 운영체제의 역할이다.
프로세스 처리:
프로세스들의 실행을 조정하는 작업을 처리하는 것은 운영체제 커널 내부에 있는 일정 관리자와 실행 관리자다.
일정 관리자: 컴퓨터 시스템에 존재하는 프로세스들에 대한 기록을 관리하고, 새로운 프로세스들을 여기에 추가하거나 완료된 프로세스들을 지운다.
모든 프로세스들을 추적하기 위해 주기억장치 안에 프로세스 테이블이라고 불리는 정보 블록을 유지한다(CTRL+ALT+DELETE)
실행 관리자:
* 참고
프로세스 A.B의 멀티태스킹
할당 시간동안 프로세스A가 실행되다가 인터럽트를 만나면 프로세스 스위치가 프로세스 B로 스위치한다. 또 B가 실행되다가 인터럽트를 만나면 프로세스A로 스위치한다.
cpu가 인터럽트 신호를 받을 경우, 현재의 계 주기를 마친 후, 현재 프로세스 위치를 저장한 다음, 인터럽트 처리기라고 불리는 프로그램의 실행을 시작하는데, 이 프로그램은 주기억장치의 지정된 위치에 저장되어 있을 것이다. 인터럽트처리기는 실행 관리자의 일부이며, 실행 관리자가 어떻게 인터럽트 신호에 반응해야 할지 정해놓은 것이다.
4) 프로세스 간의 경쟁에 대한 처리
운영체제의 중요한 작업 중의 하나는 컴퓨터의 자원들을 시스템 안의 프로세스들에게 할당하는 일이다. 여기에서 자원이라는 용어는 컴퓨터 내부의 기능뿐만 아니라 주변장치까지 포함하는 넓은 의미로 사용되고 있다.
파일관리자는 파일에 대한 접근을 관장할 뿐만 아니라 새로운 파일을 만들기 위한 대용량 저장장치 공간 할당도 맡고 있다.
메모리 관리자는 메모리 공간을 할당하고, 일정 관리자는 프로세스 테이블에서 공간을 할당하며, 실행관리자는 할당 시간을 할당한다.
' Theory' 카테고리의 다른 글
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 05 알고리즘 (0) | 2016.06.29 |
---|---|
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 04 네트워킹과 인터넷 (0) | 2016.06.27 |
컴퓨터 과학 총론, 휴먼싸이언스, 이광수 외 3명 공역 Chapter 02 데이터 조작 (0) | 2016.06.27 |
C 포인터, 구조체, 공용체 (0) | 2016.06.26 |
C 기초 복습 (0) | 2016.06.26 |