일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 스택/큐
- 동적계획법
- level 2
- github
- level2
- 코딩테스트
- 동빈나
- 개발
- 더 맵게
- 타겟 넘버
- 베스트앨범
- pwnable
- 프로그래머스
- 여행경로
- Python3
- Programmers
- 선형회귀
- level 3
- 머신러닝
- DFS/BFS
- level3
- level1
- 2020 KAKAO BLIND RECRUITMENT
- 같은숫자는싫어
- themida
- 자물쇠와 열쇠
- 전화번호 목록
- vscode
- 문자열압축
- Today
- Total
hoon
운영체제 개요 본문
프로그램을 실행할 때 무슨일이 일어날까?
본 노이만(Von Neumann) 모델에 따르면
1. 명령어를 실행한다.
2. 단순한 프로세서는 Instruction cycle을 실행한다.
Fetch(반입) : 명령어를 메모리에 반입함
Decode(해석): 반입한 명령어를 해석
Excute(실행): 해석한 명령어를 실행
프로그램이 완전히 종료될 때까지 이 작업을 반복한다.
여러개의 프로그램이 시행되면 메모리와 프로세서를 나누어 써야된다.(일정한 규칙에 의해)
컴퓨터에는 여러가지 기기들이 존재하고 프로그램이 시키는대로 프로세서가 상호 작용을 할 수 있어야 한다.
하드웨어로 이러한 기능을 구현하면 새로운 기능과 더 다양한 작업을 하기 위해 바꾸는 비용이 크다.
따라서 소프트웨어로 이러한 기능을 구현해 필요할 떄 바꿀 수 있게 하여야 한다.
이를 운영체제[폭넓게 프로그램 실행을 쉽게 만들어주는 소프트웨어의 집합]라고 한다.
(operating system 이전에 불렀던 이름으로는 supervisor, resource manager, master control program이 있음)
운영체제가 앞에 언급된 일을 하기 위한 기법
Virtualization(가상화)
물리적인 자원(processor, memory, disk)을 활용하여 일반적이고 강력하고 사용하기 쉽게 가상자원으로 바꾸는 것
이러한 이유 때문에 운영체제를 가상머신으로 고려할 수 있다.
(여러의 프로그램을 동시에 실행시킬 떄 각 하나의 프로그램이 독립된 컴퓨터에서 동작하는 환상을 줌)
[CPU의 가상화
운영체제는 CPU가 하나라도 여러 프로그램을 동시에 실행할 수 있게 지원함
CPU를 가상화 -> 각 프로그램 인스턴스 별로 하나의 cpu가 존재하는 것과 같은 환상을 줌
작성한 C program code는 다른 프로그램이 실행되는지 안하는지 신경쓰지 않음
OS는 API, 명령줄과 같은 인터페이스로 프로그램 실행과 종료를 관리
프로그램 실행순서는 사용자의 명령순서와 다름 <- 운영체제 설계자가 정한 정책으로 프로그램 실행순서를 정함]
[메모리의 가상화
Memory는 byte배열로 구성되는게 일반적
메모리를 읽기 위해 주소를 명시해야함, 메모리를 쓰기 위해 데이터의 크기를 명시
프로그램 저장식 컴퓨터는 프로그램의 모든 명령어가 메모리에 저장되고 사용된다.]
Concurrency(동시성 (or 병행성))
여러가지 일을 동시해 하는 것
한가지 문제가 있는데
1. 메모리에서 값을 읽는다.
2. 해당 값 증가
3. 다시 메모리에 저장
위의 3가지 과정이 한꺼번에 실행되지 않아서 문제가 발생한다.
따라서 위의 3가지를 한꺼번에 행하는 execute atomically(원자적으로-> 더이상 쪼갤 수 없게) 하는 방법을 찾아야한다.
Persistence(영속성)
시스템에서 데이터를 쉽게 잃을 수 있다.
DRAM -> volatile(휘발성)방식으로 데이터 저장
그럼에도 불구하고 영속적으로 데이터를 저장할 수 있는 하드웨어(SSD, HDD)와 소프트웨어(file system)가 필요
하드웨어를 관리하는 소프트웨어를 file system이라고 함, 유저가 생성한 파일을 안정적이고 효율적으로 사용하게 책임짐
운영체제 Design Goals
가상화, 동시성, 영속성
위의 세가지를 모두 만족하는 건 어렵기에 적당한 절충안이 필요
Abstraction(추상화) : 시스템을 편리하고 사용하기 쉽게 만들기
Performance(성능): 한 컴퓨터에서 일정시간 되는 처리되는 throughout 증대 or 한 작업의 시간/공간 최소화
Protection: 프로그램 간 서로의 자원을 침범하지 못하게 하기(isolation)
'Operating Systems' 카테고리의 다른 글
Scheduling (0) | 2021.04.10 |
---|---|
fork(), sched_setaffinity() 그리고 성능 측정에 관하여.. (0) | 2021.03.18 |
Virtualization-process (0) | 2021.03.13 |