전체 글
-
[Operating System] 프로세스 동기화 : 동기화란Operating System 2024. 5. 19. 22:15
프로세스 동기화에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받게 되는데, 이 과정에서 자원의 일관성을 보장해야합니다.동기화란 크게 두 가지를 의미합니다.- 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 - 상호 배제 : 동시에 접근해서는 안 되는 자원 즉, 공유가 불가능한 자원에 하나의 프로세스만 접근하게 하기 실행의 문맥을 갖는 모든 대상은 동기화 대상이기에 스레드도 동기화 대상입니다. [ 실행 순서 제어를 위한 동기화 예시: Reader Writer Problem ]Writer : Book.txt 파일에 값을 저장하는 프로세스Reader : Book.txt 파일에..
-
[Operating System] CPU 스케줄링 : 알고리즘Operating System 2024. 5. 19. 20:55
다양한 CPU 스케줄링 알고리즘에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제' FCFS (First Come First Served) 스케줄링준비 큐에 삽입된 순서대로 처리하는 비선점형 스케줄링 방식먼저 CPU를 요청한 프로세스부터 CPU 할당 [ 단점 ] : 프로세스들이 기다리는 시간이 매우 길어질 수 있다( = 호위 효과)는 부작용이 있습니다. SJF (Shortest Job First) 스케줄링선입 선처리 스케줄링의 호위 효과를 방지하기 위한 스케줄링CPU 사용이 긴 프로세스는 나중에 실행, CPU 사용 시간이 짧은 프로세스는 먼저 실행기본적으로 비선점형 스케줄링이지만, 선점형 스케줄링 방식으로도 구현할 수 있습니다. [ 장점 ]..
-
[Operating System] CPU 스케줄링 : 개요Operating System 2024. 5. 19. 17:55
CPU 스케줄링의 개요를 우선순위 스케줄링을 기반으로 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스마다 빨리 처리해야 하는 프로세스, 천천히 처리해도 괜찮을 프로세스 등을 효율적으로 처리하기 위해 운영체제는 각 프로세스의 PCB마다 우선순위를 설정하여 효율적으로 처리합니다. Ex) 입출력 집중 프로세스 / CPU 집중 프로세스 우선순위 비교: 보통 입출력 작업이 많은 프로세스( = 입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스 ( = CPU 집중 프로세스)의 우선순위보다 높습니다. 입출력 작업이 많은 프로세스는 CPU 집중 프로세스에 비해 대기상태에..
-
[Algorithm] 정렬Algorithm 2024. 5. 19. 01:42
다양한 정렬 알고리즘에 대해 정리하였습니다.정렬을 위한 교환 작업이 마치 거품처럼 버블버블 거린다고 해서 버블 정렬이라고 합니다. - Performance : O(n²)- Space Complexity : O(1) [ 알고리즘 단계 ]배열을 처음부터 끝까지 순회하며 인접한 두 원소를 비교합니다.만약 현재 원소가 다음 원소보다 크다면 두 원소의 위치를 서로 교환합니다.이 과정을 배열의 끝까지 반복하면서 가장 큰 원소가 배열의 마지막으로 이동합니다.배열의 마지막 원소는 정렬되었으므로, 다시 처음부터 끝까지 반복합니다. 이때는 마지막 원소는 정렬된 상태이므로 제외하고 진행합니다.위의 과정을 반복하면서 배열이 완전히 정렬될 때까지 진행합니다. function bubbleSort(arr) { const le..
-
[Data Structure] 힙(Heap)Data Structure 2024. 5. 19. 01:29
힙(Heap) 자료구조에 대해 정리하였습니다.힙(Heap) 자료구조는 트리 기반의 완전 이진 트리로, 특정한 순서 속성을 유지하는 데이터 구조입니다. 최대 힙(Max Heap)과 최소 힙(Min Heap)으로 구분됩니다.일반적으로 배열을 통해 구현합니다. 최대 힙 (Max Heap):각 부모 노드의 값이 자식 노드의 값보다 크거나 같습니다.트리의 루트(root) 노드는 항상 최대값을 가집니다. 최소 힙 (Min Heap):각 부모 노드의 값이 자식 노드의 값보다 작거나 같습니다.트리의 루트 노드는 항상 최소값을 가집니다. [ 힙의 배열 표현 ]: 힙은 배열로 쉽게 표현할 수 있습니다. 배열 인덱스를 이용하여 부모와 자식 노드 간의 관계를 정의할 수 있습니다:부모 노드 인덱스: i왼쪽 자식 노드 인덱스: ..
-
[Operating System] 운영체제 : 스레드Operating System 2024. 5. 18. 17:51
운영체제의 스레드에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'스레드(thread)는 프로세스를 구성하는 실행 흐름의 단위입니다.하나의 프로세스는 하나 이상의 스레드를 가질 수 있습니다. [ 스레드의 구성 요소 ]스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보를 가지고 있습니다.하지만, 모든 스레드들은 프로세스의 자원을 공유하면서 실행이 됩니다. 요즘 사용되는 운영체제를 보면, CPU에게 처리해야 될 작업을 전달할 때 프로세스 단위로 전달하기보다는 스레드 단위로 전달하는 경우가 많습니다. 프로세스끼리는 자원을 공유하지 않습니다 → 독립적으로 실행 스레드끼리는 같은 프로세스 내..
-
[Operating System] 운영체제 : 프로세스 상태와 계층 구조Operating System 2024. 5. 18. 17:17
프로세스 상태와 계층 구조에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'프로세스 상태는 생성 상태, 준비 상태, 실행 상태, 대기 상태, 종료 상태로 나눌 수 있습니다. 생성 상태이제 막 메모리에 적재되어 PCB를 할당 받은 상태준비가 완료되었다면 준비 상태로 준비 상태CPU를 할당 받아 실행할 수 있지만, 자신의 차례가 아니기에 기다리는 상태자신의 차례가 된다면 실행 상태로 ( = 디스패치) 실행 상태CPU를 할당 받아 실행 중인 상태할당된 시간 모두 사용 시 (타이머 인터럽트 발생 시) 준비 상태로실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로 대기 상태프로세스가 실행 도중 입출력장치를 사용하는 경우 접어드는 상태..
-
[Operating System] 운영체제 : 프로세스 개요Operating System 2024. 5. 18. 16:02
프로세스와 PCB, 프로세스의 메모리 영역에 대해 정리하였습니다.참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'실행 중인 프로그램을 프로세스라고 합니다.포그라운드 프로세스 (foreground process) : 사용자가 볼 수 있는 공간에서 실행되는 프로세스백그라운드 프로세스 (background process) : 사용자가 볼 수 없는 공간에서 실행되는 프로세스 백그라운드 프로세스는 다음 두 가지 프로세스로 나눌 수 있습니다.사용자와 직접 상호작용이 가능한 백그라운드 프로세스사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스 = 데몬(daemon), 서비스(service) 프로세스들은 돌아가며 한정된 시간 만큼만 CPU를 이용합니다.- 자신의 차..