노션에 정리한 글을 블로그에 옮기는 중입니다.. 1. Intro to OS 프로그램을 실행하면 무슨 일이 발생할까? 실행중인 프로그램은 Instrution 즉, 명령어를 실행한다. 프로세서는 메모리로부터 Instruction을 Fetch 한다. De
자원은 1개. 하지만 cpu만 사용하는건 아니기 때문에 여러 프로그램이 나눠쓸 수 있다.예를 들어 다음과 같이 cpu1개가 프로그램 하나를 실행하는 상태이다.Multiple Process는 다음과 같이 실행되는 것처럼 보이지만, 사실 cpu 1개로 나눠쓰는 거다.이렇게
parent process는 child process를 생성한다.그리고 그게 결국에는 다른 프로세스를 생성한다.마침내 프로세스 트리 형태가 된다.Child process들은 자원이 필요하다.OS가 주거나parent가 공유하는 자원이Resource sharing 자원 공
OS는 time sharing을 통해 physical CPU를 공유할 필요가 있다.문제Performance : 우리는 어떻게 추가적인 오버헤드 없이 가상화를 구현할 수 있을까?Control : 어떻게 우리는 CPU 컨트롤을 유지하면서 효율적으로 프로세스를 실행시킬 수
프로그램을 실행하는 과정을 2가지로 나눠보면 cpu와 i/o로 나눠볼 수 있음.CPU 버스트와 I/O 버스트의 교대 순서프로세스마다 cpu burst가 길기도 하고 짧기도 하고 다르다.계산을 열심히 하는 프로그램은 cpu를 주로 쓸것임.y축인 frequency는 cpu
Multi-level Feedback QueueGoalsturnaround time을 최적화하는 것turnaround time : 큐에 들어온 다음 수행 완료될 때까지의 시간. cpu burst time을 알아야함. SJF, STCF : workload에 대한 사전
멀티코어 프로세스의 증가는 멀티프로세서 스케쥴링 확산의 원인Multicore : 여러개의 CPU core가 하나의 칩에 패킹된 것더 많은 CPU를 더하는 것은 하나의 애플리케이션이 더 빠르게 만든다는 뜻이 아니다.당신은 threads를 사용하여 병렬로 처리할 수 있을
메모리 가상화는 무엇일까?OS는 physical memory를 가상화한다.OS는 각 프로세스마다 메모리 공간에 대한 환상을 제공한다.이것은 마치 각 프로세스가 자신만의 메모리를 사용하는 것처럼 보이게 한다.→ Physical memory는 정해져 있지만 process에
Memory API에는 여러가지가 있다.여기서는 malloc(), sizeof(), free(), calloc(), realloc()을 볼 예정이다.→ heap에 메모리 공간을 할당한다.Argumentsize_t size : 메모리 블록의 사이즈이다. 바이트단위size
test.c라는 파일을 컴파일하여 test.o라는 이름의 object module을 생성한다. 이때 오브젝트 모듈들은 여러개로 나뉘어서 저장되는데 이것들을 linker가 모두 합쳐서 load module을 만들고 다른 C library에 있는 값들을 loader가 가져
Heap, Stack은 Dynamic하다.그러면 중간에 비어있는 공간 있을거임.생각보다 빈공간이 넓다.아까까진 모양 손상 없이 그대로 올라간다고 가정했었음.그런데 그대로 적재하는건 비효율적임.공간이 매우 커보임. Big chunk of “free” spacefree s
Overview 메모리 공간 관리를 잘 하려면 2가지 접근법이 있다. 의미 있는 덩어리 단위로 나눠서 적재하자 = Segmentation 단편화 문제가 점점 심각해진다. 의미에 관심 없고 예를 들면 4kb 씩 fixed-sized unit
I/O Scheduler 1. 디스크 스케쥴링 목표 디스크 서비스 시간이란? 디스크 드라이브가 I/O 요청을 처리하는데 걸리는 시간을 의미한다. 데이터를 읽거나 쓸 때 소요되는 시간을 측정하는 지표이다. 디스크 서비스 시간이 짧을수록 디스크 I/O 성능이 우수하다