일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 10871
- 1065
- 1%d
- X보다 작은 수
- 세 수
- 평균은 넘겠지
- for문 사용해보기
- Dapp
- 10817
- 알고리즘 문제풀이
- if문 사용해보기
- 솔리디티
- 그대로 출력하기
- 비트 코인
- 시험 성적
- 블록 체인
- 더하기 사이클
- 단계별로 풀어보기
- Mist
- 1546
- Remix
- 백준
- 가상 화폐
- Baekjoon
- 이더리움
- 2448
- 1110
- 별 찍기 - 11
- 자바스크립트
- 함수 사용하기
- Today
- Total
블링블링 범블링
[OS 1장] 컴퓨터 시스템의 소개 본문
- 운영체제란? -
여러분들은 운영체제에 대해서 잘 알고 있는가?
아마 컴퓨터 전공자가 아니더라도 컴퓨터의 운영체제에 대해서는 많이들 알고 있을 것이다. 우리가 컴퓨터를 킬 때 나타나는 Window 10이라는 것이 바로 운영체제이기 때문이다.
또한 파일을 관리할 때 Window라는 파일에 있는 파일들은 건들이지 않는다. 그곳에 있는 파일들이 잘못될 경우 컴퓨터가 엉망진창이 된다는 것을 알기 때문이다. 그러면 왜 그렇게 되는지는 아는가? 운영체제는 왜 우리의 컴퓨터에 중요한 존재인가? 우리는 운영체제에 대해서 공부를 해볼 것이다.
컴퓨터를 하나의 국가에 비유를 한다면 운영체제는 컴퓨터 세계에 있어서 정부와 같은 곳이다. 쉽게 말해 컴퓨터의 대부분을 관리하는 역할을 한다. 운영체제는 컴퓨터 하드웨어를 잘 관리하여 성능을 높이고 사용자에게 편의성을 제공하는 프로그램이다. 만약 운영체제가 컴퓨터에 존재하지 않는다면 어떻게 될까? 우리는 컴퓨터로 아무것도 알 수 없게 된다. 왜냐하면 마우스를 움직이는 것마저도 운영체제의 관리 속에서 움직이기 때문이다.
그렇다면 운영체제는 어떻게 작동을 하는 것일까?
이를 알아보기에 앞서 우리는 부팅이라는 과정을 먼저 알아보자.
부팅은 컴퓨터를 작동시키는 과정이다. 우리가 컴퓨터를 on할 때 일어나는 일련의 일들을 설명해보고자 한다.
우선 CPU와 메인 메모리, 하드디스크가 준비되어야한다. 컴퓨터를 구성하고 있는 기본적인 친구들이다.
CPU는 컴퓨터에서 연산을 담당하고 메인 메모리는 컴퓨터에서 작동하고 있는 프로그램인 프로세서들을 저장, 관리한다.
하드디스크는 아직 사용하지 않는 프로그램들을 저장하고 있다. 컴퓨터를 on 시키기 전에는 운영체제는 하드디스크에 존재한다.
컴퓨터를 on 시키면 하드디스크에 있는 운영체제가 메인 메모리로 올라가게 된다. 이러한 동작을 하는 곳은 바로 메인 메모리이다.
메인 메모리는 원래 RAM인 휘발성 메모리로 컴퓨터가 off되면 자료를 모두 날려버린다. 컴퓨터를 킬 때 운영체제를 올리는 프로그램까지 날려버리면 운영체제는 하드디스크로 올라올 수 있는 방법이 없어져 버린다. 따라서 메인 메모리에 작은 부분은 부팅을 위한 ROM인 비휘발성인 부분으로 지정되어 있다.
그 부분에 Boot loader라는 프로그램이 운영체제를 메인 메모리에 올려놓는다. 그러면 이제부터 운영체제가 컴퓨터를 제어하기 시작한다. 이 과정이 바로 부팅이다. 부팅을 한 후 운영체제는 사건을 기다리며 대기 상태에 들어간다. 그리고 컴퓨터가 꺼질 때는 운영체제는 다시 하드디스크로 돌아간다.
운영체제는 시스템 콜과 인터럽트에 의해서 움직인다.
시스템 콜은 컴퓨터가 필요한 작업을 수행하기 위해 운영체제에 무언가를 해달라고 요구하는 요청이다.
운영체제는 여러 가지 기간을 담당한다. 이러한 담당 부서들에게 연결된 하드웨어나 프로세서들이 필요에 의해 요청을 보낸다.
예를 들면 마우스를 움직이는 것 또한 명령을 보내주는 것이고 게임을 실행시키는 것도 요청을 보내는 것이다. 그러면 운영체제가 제어를 하면서 동작을 보여주게 된다.
인터럽트는 프로세서가 프로그램을 실행하는 도중 갑자기 발생하는 문제이다. 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 나누어진다. 인터럽트가 실행되면 운영체제 내의 코드가 실행이 되고 Interrupt Service Routine을 하게 된 후 다시 대기하는 상태가 된다.
- 용어 요약 정리 -
Basic element
Processor, Main Memory, I/O Modules, System Bus
Process Registers
User-Visible register
Data register : General purpose registers
Address register: Index register segment pointer, Stack pointer
Control and Status Registers : PC, IR
Interrupt
현재 실행중인 프로그램을 잠시 멈추고 다른 일을 수행 한다
Program: 프로그램이 실행 중에 발생하는 인터럽트로서 잘못된 명령어 실행 devide 0, Overflow
Timer: 시스템이 주기적으로 어떤 기능을 수행하기위해 발생
I/O : I/O operation 의 정상적인 완료나 I/O 에서의 에러 상태를 알림
Hardware failure : 전원 이상이나 메모리 패리티 에러의 알림
※대부부의 경우 에 비해 상대적으로 느린 들을 효율을 향상시키기 위해 사용하며 processors는 I/O Device 가 수행중일 때 다른 일을 수행할 수 있다
※Instruction은 "Fetch Cycle - Execution Cycle- Interrupt Cycle" 의 반복으로 수행 된다
Memory hierarchy
시스템의 성능을 위한다면 무조건 access time 이 작고 capacity 가 큰 memory로 system을 구현할 수 있지만 그렇게 구성된 시스템은 cost가 너무 많이 든다. 적당한 cost 에 최대의 성능을 발휘할 수 있는 시스템 구현이 필요하다.
이를 위해서 cost, capacity, access time 등을 절충한 memory hierarchy 를 이용한다 . . Register Cache Memory Second Storage
Cache Memory
DRAM 으로 이루어진 Main Memory는 한 개의 트랜지스터와 capacity로 구성돼 집적도는 높으나 주기적으로 재충전을 해야 하기 때문에 속도가 느리다. 이에 반에 SRAM 으로 구성된 Cache memory 는 재충전 overhead 가 없어 빠르지만 DRAM 보다 소자를 더 많이 사용하기 때문에 집적도가 떨어진다. 즉, Process 에 비해 엄청나게 느리지만 집적도가 높고 cost가 싼 main Memory 를 보다 빠르고 효율적으로 이용하기 위해 중간에 buffering 하는 cache memory를 사용한다, 이는 적은양의 cache memory 일지라도 프로그램이 수행 시 locality 를 갖기 때문에 효과적이다.
Design issue : cache size, block size, Mapping function, Replacement algorithm, write policy
※ Locality
Spatial Locality : memory 의 참조는 특정 영역으로 군집화 된다.
Temporal Locality : 최근에 참조한 memory 가 앞으로 다시 참조되어질 확률이 높다
Reenterant Procedure
실행되는 동안 여러 사용자로부터 공유될 수 있는 procedure
Permanent part(code) + Temporal Part(data: stack에 저장)
프로그램 코드가 공유되므로 main memory를 효율적으로 사용할 수 있도록 한다.
'Technology > 오퍼레이팅 시스템' 카테고리의 다른 글
[OS 5장] 프로세스 관리 - 스케줄링 (1) | 2018.04.17 |
---|---|
[OS 4장] 프로세스 관리 - 개요 (0) | 2018.04.17 |
[OS 3장] 이중 모드 및 하드웨어 보호 (0) | 2018.04.17 |
[OS 2장] 운영체제 종류와 역할 (0) | 2018.04.17 |
Tip. 운영체제 용어 정리 (0) | 2018.04.17 |