[인프런 워밍업 클럽 3기 CS] 자료구조와 알고리즘 / 운영체제 회고

[인프런 워밍업 클럽 3기 CS] 자료구조와 알고리즘 / 운영체제 회고

 

1. 프로세스와 쓰레드

프로세스 (Process)
	•	실행 중인 프로그램으로, 독립적인 메모리 공간(Code, Data, Heap, Stack)을 가짐.
	•	운영체제(OS)에서 하나의 작업 단위로 취급.
	•	프로세스 간 자원 공유가 어렵고, 문맥 교환(Context Switching) 비용이 큼.

쓰레드 (Thread)
	•	프로세스 내에서 실행되는 작업 단위로, 프로세스의 Code, Data, Heap을 공유하지만 Stack은 독립적으로 가짐.
	•	같은 프로세스 내에서는 빠른 데이터 공유가 가능하지만, 동기화 문제가 발생할 수 있음.
	•	멀티쓰레딩을 활용하면 응답성을 높이고 자원을 효율적으로 사용할 수 있음.

프로세스 vs. 쓰레드

비교 항목	프로세스	쓰레드
메모리	독립적	공유 (Code, Data, Heap)
문맥 교환 비용	높음 (PCB 교체)	낮음 (TCB 교체)
자원 공유	어려움 (IPC 필요)	쉬움
독립성	강함	약함 (같은 프로세스에 종속)

2. CPU 스케줄링
	•	CPU를 여러 프로세스가 효율적으로 사용할 수 있도록 운영체제가 결정하는 방식.
	•	목적: CPU 이용률 및 시스템 성능 향상, 응답 시간 단축, 공정한 CPU 분배.

스케줄링 방식
	1.	비선점형 (Non-preemptive)
	•	한 프로세스가 CPU를 점유하면 작업이 끝날 때까지 다른 프로세스가 CPU를 사용할 수 없음.
	•	예: FCFS(First-Come, First-Served), SJF(Shortest Job First)
	2.	선점형 (Preemptive)
	•	특정 조건에서 프로세스가 CPU를 양보하고 다른 프로세스가 실행될 수 있음.
	•	예: RR(Round Robin), SRTF(Shortest Remaining Time First), Priority Scheduling

대표적인 스케줄링 알고리즘

알고리즘	방식	특징
FCFS	비선점형	먼저 도착한 순서대로 실행 (대기 시간 증가 가능)
SJF	비선점형	실행 시간이 가장 짧은 프로세스부터 실행
SRTF	선점형	남은 실행 시간이 가장 짧은 프로세스부터 실행
RR	선점형	일정 시간(Time Quantum)마다 프로세스를 교체
Priority Scheduling	혼합	우선순위가 높은 프로세스부터 실행

3. 자료구조

1) 배열 (Array)
	•	고정된 크기의 연속된 메모리 공간을 사용.
	•	인덱스를 통한 빠른 접근(O(1)) 가능하지만, 삽입/삭제가 어려움(O(n)).

2) 연결 리스트 (Linked List)
	•	노드(Node)들이 포인터를 이용해 연결된 자료구조.
	•	삽입/삭제가 O(1)로 빠르지만, 인덱스 접근이 O(n)으로 느림.

3) 스택 (Stack)
	•	LIFO(Last In, First Out) 방식.
	•	함수 호출 스택, 되돌리기(Undo) 기능 등에 활용.

4) 큐 (Queue)
	•	FIFO(First In, First Out) 방식.
	•	작업 스케줄링, 네트워크 패킷 처리 등에 활용.

5) 해시 테이블 (Hash Table)
	•	Key-Value 형태로 데이터를 저장하는 자료구조.
	•	빠른 검색(O(1))이 가능하지만, 해시 충돌이 발생할 수 있음.

6) 트리 (Tree)
	•	계층 구조를 이루는 자료구조.
	•	이진 탐색 트리 (BST): O(log n)의 탐색 속도를 가짐.
	•	힙 (Heap): 우선순위 큐 구현에 사용됨.
	•	트라이 (Trie): 문자열 검색 최적화.

7) 그래프 (Graph)
	•	정점(Vertex)과 간선(Edge)으로 구성된 자료구조.
	•	최단 경로 탐색 (Dijkstra), 최적 경로 찾기 (A*) 등에 활용.

 

댓글을 작성해보세요.

채널톡 아이콘