일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Solid
- BFS
- 다형성
- spring boot
- 재설치
- 인터페이스
- divide and conquer
- 기술 통계
- dag
- 깊이 우선 탐색
- 확률변수
- 스프링
- 너비 우선 탐색
- 이진탐색
- PostgreSQL
- 표본 추출
- 추론 통계
- 확률분포
- 오일러 경로
- 이분탐색
- 베이지안
- Probability Distribution Function
- 알고리즘
- Algorithm
- 객체 지향 설계
- dfs
- 분할정복
- 확률
- Random variable
- 확률분포함수
- Today
- Total
말하는 감자
[OS] 기본개념 6가지 본문
운영체제란?
시스템의 자원과 동작을 관리하는 소프트웨어로서, 프로세스 관리, 저장장치 관리, 네트워킹, 사용자 관리, 디바이스 드라이버 관리의 다섯가지 역할이 있다.
관리 대상 | 설명 | 대표 개념들 |
프로세스 | 응용 프로그램을 관리한다. cpu를 관리하는 것이라고도 볼 수 있다. | 프로세스, 스레드, 스케줄링, 동기화, IPC 통신 |
저장장치 | 1차 저장장치와 2차 저장장치를 관리한다. | 메모리 관리, 가상 메모리, 파일 시스템 |
네트워킹 | 네트워크 프로토콜을 지원한다. | TCP/IP, 기타 프로토콜 |
사용자 | 각 계정을 관리하기 위해 접근 권한을 관리한다. | 계정 관리, 접근권한 관리 |
디바이스 드라이버 | 여러 하드웨어를 계층으로 추상화하여 관리한다. | 순차접근, 임의접근 장치, 네트워크 장치 |
메모리 구조 (RAM)
메모리는 CPU가 연산을 수행하기 위해서 필요한데, 운영체제가 하드디스크에서 메모리로 프로그램을 읽어온다.
메모리에는 크게 4가지 종류로 Code, Data, Heap, Stack 이 있다.
- Code는 소스코드가 들어가는 부분
- Data는 전역변수, 정적변수가 할당되는 부분
- Heap은 사용자가 직접 관리하는 영역으로 데이터가 동적으로 할당되는 공간
- Stack은 함수의 호출정보, 지역변수, 매개변수들이 저장됨
프로세스와 스레드
프로세스는 실행중인 프로그램, 스레드는 프로세스 안에서 실행되는 흐름 단위이다.
- 메모리와 CPU가 각 프로세스마다 할당돼서 실행되는데,
- 스레드는 프로세스 안에서 다른 스레드와 메모리와 CPU를 공유해서 사용한다. 단, 스레드끼리 함수의 호출정보, 지역변수 등이 있는 Stack부분은 공유되지 않는다.
CPU 스케줄러
준비큐에 있는 프로세스에 대해서 CPU를 할당하는 방법이다. 크게 선점하는 방식과 비선점하는 방식으로 나뉜다.
비선점 | 선점 | ||
FCFS | First come First served | SRT | Shortest Remaining Time |
SJF | Shortest Job First | Round Robin | time slice가 크면 FCFS, 작으면 context switch 비용 |
Priority Scheduling |
가상 메모리
모든 프로세스에게 메모리를 할당하기에는 메모리의 크기가 한계가 있어서 사용하는 방법이다. 프로세스에서 사용하는 부분만 메모리에 올리고, 나머지는 디스크에 보관하는 기법을 가상메모리라고 한다.
데드락
프로세스가 자원을 얻지 못해 다음 작업을 못하는 상태이다. 예를 들면, 프로세스 1번과 2번이 각각 자원 A와 B를 얻어야 되는데, 프로세스 1번이 B를 2번이 A를 가지고 있어서 서로 무한정 대기하는 상태를 들 수 있다.
데드락의 발생조건에는 4가지가 모두 충족이 되어야 하는데 상호 배제, 점유 대기, 비선점, 순환 대기이다.
발생조건 | 설명 |
상호 배제 (Mutual exclusion) | 한 자원은 한 번에 한 프로세스만이 사용가능 |
점유 대기 (Hold and wait) | 최소 한 자원을 점유하며 할당된 다른 자원을 점유하기 위해 대기 |
비선점 (No preemption) | 할당된 다른 자원은 강제로 빼앗아 올 수 없음 |
순환 대기 (Circular wait) | 프로세스들이 대기하는 자원의 순서도가 사이클을 이룸 |