센로그
1. OS overview 본문
◆ OS란?
OS는 컴퓨터의 유저와 하드웨어 사이에서 중계역할을 한다,
유저 프로그램이 사용하는 하드웨어 자원 관리, 자원 분배 관리 등의 일을 함.
유저에게 최대한 효율적으로 하드웨어 자원을 제공하는 역할을 한다.
이때 하드웨어 자원(코어 개수, 메인 메모리 크기 등)이 제한적이기 때문에, 효율적으로 관리해서 골고루 나눠줘야 함!
◆ OS의 특징
① Abstraction : 사용자가 밑단의 복잡한 HW 몰라도 되도록 추상화하는 것.
② Sharing : HW 리소스는 1개인데, CPU는 한 번의 하나의 일만 가능하니 OS가 HW자원을 관리한다.
→ Time multiplexing, Space multiplexing
③ Protection : 모든 리소스들을 보호하고 함부로 점유하거나 다른 것을 쓰지 못하도록 한다.
④ Fairness: 골고루 동작하도록 한다.
⑤ Performance: 최대 성능을 낼 수 있도록 한다.
◆ 폰 노이만(von Neumann) 구조
CPU, 메모리, 프로그램이 나뉘어져있고
메모리가 data와 instructions을 같이 저장하고 있는 구조
기본적으로 우리가 사용하는 데탑, 노트북.. 등은 폰노이만 구조로 이루어져 있다.
CPU와 메모리가 나눠져있는 구조. CPU가 메모리로부터 instruction들을 불러와서 하나씩 처리해줌.
이때 메모리가 data와 instructions을 같이 저장하고 있다.
만약 data를 읽어오라는 instruction이 나오면, 다시 메모리로 돌아가서 data를 읽어옴.
※ 폰노이만 구조에서는, CPU가 프로그램을 실행하려면 항상 메모리에 접근해야 한다!
CPU가 단독으로 실행하는 경우는 없다
◆ 메모리 계층 구조
메모리의 종류별 특성에 따라 hierachy가 정해져있다.
- 레지스터: CPU가 어떤 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치. 보통 CPU 안에 존재함
- 캐시: 데이터나 값을 미리 복사해 놓는 임시 장소. 시스템의 효율성을 위해 사용. 보통 CPU 안에 존재함
- 메인메모리: CPU가 직접 접근할 수 있는 메모리. 프로그램이 실행되려면 해당 프로그램이 메모리에 올라와야 한다
- 하드디스크 드라이브나 nonvolatlie 메모리: 반영구적으로 보관하고 싶은 데이터들 저장
■ speed, cost, volatility(휘발성)를 바탕으로 정리한 hierachy
volatile vs non volatile은 컴퓨터 종료시에 데이터가 없어지는지 아닌지에 따라 나눈 것.
hierachy가 피라미드형태라 위로 갈수록 빠르지만 용량이 작음!
참고) https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0
◆ 프로그램 vs 프로세스
- 프로그램: 디스크에 저장되어있는 실행가능한 파일
- 프로세스: 실행중인 프로그램
프로세스가 현재 어떤 상태(state)인지에 따라서 관리하게 됨.
ex) 새로 프로세스가 만들어지면 new 상태, 실행할 준비가 되면 ready 상태, 돌아가는 상태이면 running 상태...
프로세스를 관리하기위한 데이터 스트럭처가 PCB임.(이 안에 process state도 저장되어 있음)
◆ 프로그램을 실행하면...
프로그램 데이터 exe 파일 안에 binary 형태로 보관되어있음
소스 코드 파일을 컴파일해서 나오는 결과물이 저장되어있는 형태임. 대부분 instruction들을 담고있음
위 그림은 사용자가 chrome 프로그램을 실행하는 과정이다.
실행(클릭) → disk에서 main memory로 프로그램이 올라감(복사) → cpu가 메모리로부터 instruction들을 한줄씩 불러서 처리함
이때, CPU cache에서 메인 메모리에 올라온 값들 중 일부를 미리 접근해서 캐시에 올려놓음(캐싱).
그러면 CPU가 캐시로부터 instruction들을 불러와서 빨리 처리함.
◆ 스레드
프로세스 내에서 실행되는 흐름의 단위
한 프로세스가 여러 개의 스레드를 가질 수 있음.
실제로 프로세스가 코어에서 돌아가는 단위는 스레드 단위임.
◆ 프로세스 스케쥴링
프로세서의 개수보다 프로세스가 더 많다면, 프로세스들이 시간을 나눠서 CPU를 써야할 것임.
OS는 스케쥴링 알고리즘에 따라 어떤 코어가 어떤 시간에 어떤 프로세스를 얼마나 돌릴지 결정함. (프로세스 스케쥴링)
◆ 프로세스 동기화
만약 스레드나 프로세스끼리 공유하고있는 변수나 자원이 있는 경우, 일관성을 유지하도록 해야 한다
.
OS는 프로세스들이나 스레드들이 공유 변수나 공유 자원을 동기화하도록 해준다.
'CS > 운영체제' 카테고리의 다른 글
6. Synchronization Tools (0) | 2023.10.14 |
---|---|
5. CPU Scheduling (0) | 2023.09.20 |
4. Therad & Concurrency (0) | 2023.09.18 |
3. Processes (0) | 2023.09.13 |
2. Operating System Structures (0) | 2023.09.06 |