운영체제란?
1) 시스템의 자원(cpu, 메모리)과 동작을 관리하는 소프트웨어
2) 프로세스, 저장장치(RAM, HDD),네트워킹, 사용자, 하드웨어를 관리
메모리 구조
<프로그램 실행 과정>
출처: https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/
1) Code : 소스코드가 들어가는 부분
2) Data : 전역변수, 정적변수가 할당되는 부분
3) Heap : 사용자가 직접 관리하는 영역으로 데이터가 동적으로 할당되는 공간
4) Stack : 함수의 호출정보, 지역변수, 매개변수가 저장
프로세스, 스레드
1) 프로세스 : 실행중인 프로그램
2) 스레드 : 프로세스 안 실행되는 흐름 단위 (예. 유튜브 동영상이 실행되고, 그 동시에 좋아요를 누르는 것 하나 하나의 동작을 스레드라고 한다.)
👉 프로세스는 메모리와 CPU를 프로세스마다 할당받아서 사용하는데 스레드는 프로세스 안에서 다른 스레드와 메모리와 CPU를 공유해서 사용한다.
출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
CPU 스케줄러
: 준비큐에 있는 프로세스에 대해서 CPU를 할당하는 방법
(종류 : FCFS, SJF, SRT, Priority, Scheduling, Round Robin)
출처 : https://hyunah030.tistory.com/4
가상 메모리
1) 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 방법
2) 모든 프로세스에게 메모리를 할당하기에는 메모리의 크기가 한계가 있어서 사용하는 방법
데드락
1) 프로세스가 자원을 얻지 못해 다음 작업을 못하는 상태
(예. p1, p2가 각각 자원 a와 b를 얻어야 되는데 p1은 a를, p2은 b를 가지고 있어서 서로 무한정 기다리는 상태)
출처 : https://lazaros7.tistory.com/280
2) 데드락의 조건 : 상호배제, 점유대기, 비선점, 순환대기