운영체제

송은우·2022년 9월 6일
0

대학 수업

목록 보기
4/6

Fetch , Decode, Get Data, Execute 같은 것들

machine cycle.

OS는 하드웨어, 소프트웨어 사이에 중재 역할을 한다.
운영체제는 machine cycle 을 잘 돌아가도록 해주는 기능, 메모리 참조, 공유 기능
화면에 출력하는 다양한 기능들. 같은 것들을 효율적으로 돌도록 해주는 소프트웨어이다.

이런 기능을 위해 서비스를 제공한다.

System call 을 호출하기 쉽도록 만들어 준다(라이브러리들 이라고 생각해도 됨)
해당 운영 체제를 다루고 있는 api를 사용해야 한다.

자원 관리도 담당해줌
Resource manager의 역할
cpu공유, 메모리 공유 같은 부분을 다루게 됨

폰 노이만 구조에 전제는 메모리에 저장을 해야된다는 것 여기서 병목현상 발생
이를 해결하게 위해서 우리가 다양한 시도들을 하는데, 캐싱 같은 것들이 있음

여러 프로그램이 동시에 cpu, memory 를 사용하려고 한다는 것에서 가상화라고 하는 주제가 나오게 됨

프로세스 별로 private 한 메모리가 있어서, 실제 physical 한 부분은 다르게 되어있음
같은 process를 2개 띄워서 우연찮게 같은 주소가 print된다고 해도, 실제 physical 한 부분은 다른 주소이다!

140명이 동시에 서버에서 vi를 쓴다고 치면, vi가 140개가 되는것은 아니고, 1개만 올라가고, 버퍼에 들어가서 처리할 뿐임

Virtualization, Concurrency, Persistence 이렇게 총 3가지 이슈가 있음
1. Virtualization : 운영체제가 우리가 쓰는 주소를 직접 건드리지 않고, 가상화 해서 매핑함
2. Concurrency : Thread safe, Async signal safe 같은 개념들
3. Persistency : Disk 나 SSD 에 운영체제의 fs가 직접 접근해서 저장해두는 것을 의미함

Process : Running program
Disk에 저장된 것 : passive, memory : active

신경써야 되는 부분 : context switching 시에 발생하는 오버헤드 축소

메모리 가상화로 2기가 프로그램을 1기가 메모리밖에 없는 상황에서도 사용할 수 있음

data, text 에 대한 코드 부분은 분명히 정해져있지만, Stack, Heap부분은 분명히 없다는 것


Ready 는 queue 에 그냥 들어가 있는 상태
Scheduling algorithm 은 Ready 상태에 있는 task들의 우선순위를 조절하는 것

Blocked 상태는 IO 시에 효율성을 위해서 남겨둔 부분이다.
PCB 라는건. A가 돌고, B가 돌고 하는 느낌이 B 에 해당하는 메타데이터, 링크들이 PCB로 가지고 있고, Queue로 가지고 있다는 것. Ready Queue 가 이런 역할을 함

Block Queue 가 있는 느낌
다양한 방식으로 우선순위를 조정하는 알고리즘이 내장되어있음.

PintOS 를 이용해서 실습을 하게 될 예정
Linux 는 너무 복잡하기에, 이를 간단한 OS를 이용해서 처리함

실제 Linux 의 환경
PCB가 LinkedList 의 형태로 이루어져 있음

생성 가능 프로세스의 수는 이론상 무한

fork, zombie 같은 내용 설명
wait 은 child 프로세스 테이블의 데이터들을 없애주는 과정
Reap 안 하면 zombie 가 됨
wait(NULL) 같은 경우는 child의 정보 버림
wait(&status) 하면 exit 후 어떤 것을 반환했는지를 처리할 수 있음

모든 Process가 State를 가짐.(Process State)
Process State 단계에서는 Blocked 상태로 갈 때 IO일때만은 아님

Zombie : Parent 는 수행중, child사망. wait 부르기 전
Orphan : Child 가 수행중, parent 사망. wait 안 부르고 죽음

profile
학생의 마음가짐으로 최선을 다하자

0개의 댓글