프로세스 동기화(임계구역, 뮤텍스, 세마포어, 데드락)
동기화란?
프로세스 동기화는 여러 프로그램(프로세스)나 작업(스레드)이 동시에 같은 자원을 사용할 때, 서로 방해하지 않고 올바르게 동작하도록 순서를 맞추거나 접근을 조절하는 방법
- 실행 순서 제어를 위한 동기화
- 상호배제(공유 불가능한 자원의 동시사용을 피하기 위한 알고리)를 위한 동기화
뮤텍스
화장실이 하나 뿐이 없는 식당과 비슷하다. 화장실을 가기 위해서는 카운터에서 열쇠를 받아 가야 한다.
화장실을 가려고 하는데, 카운터에 키가 있으면 화장실에 사람이 없다는 뜻이고 당신은 그 열쇠를 이용해 화장실에 들어갈 수 있다.
화장실을 이용하는 사람은 프로세스 혹은 쓰레드이고 화장실은 공유자원, 화장실 키는 공유자원에 접근하기 위해 필요한 어떤 오브젝트.

세마포어
여러 명이 동시에 자원을 쓸 수 있게 숫자로 관리
예를 들면 , 손님이 화장실을 좀 더 쉽게 이용할 수 있는 레스토랑이다. 세마포어를 이용하는 화장실에는 여러개의 칸이 있다. 만약 빈 칸이 0개라면 화장실에 대기하는 사람은 칸의 개수가 1이 될 때까지 기다려야 한다.

데드락
데드락은 서로 자원을 기다리다가 아무도 일을 못 하게 되는 상황
상호 배제 + 점유 대기 + 비선점 + 순환구조 = 데드락
상호 배제
프로세스가 소유 중인 자원에, 다른 프로세스가 접근 할 수 없다.
점유 대기
프로세스가 최소 하나 이상의 자원을 보유하고 있는 상황에서 다른 프로세스가 가진 자원을 요청하고 있는 상황을 말함.
비선점
운영체제가 CPU나 메모리 같은 자원을 프로세스로부터 강제로 뺏어 올 권한이 없는 상태
순환구조

이 상태로 내가 필요한 걸 앞 사람이 가지고 있고 뒷 사람이 필요한 걸 내가 갖고 있다면 무한루프에 빠짐.
하지만 선형구조는 헤드와 꼬리가 되는 부분은 굴레를 끊어낼 수 있다. 그래서 데드락에 빠지려면 환형 구조여야 한다.

메모리 관리 기초(페이징, 세그먼테이션, 가상 메모리)
가상 메모리
CPU가 직접 접근할 수 있는 기억장치는 메인 메모리이다. 하지만 프로그램 용량이 메인 메모리보다 크면 어떻게 할까? 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한다.이게 가상 메모리이다. 메모리의 공간은 한정적이므로 사용자에게 더 많은 메모리를 제공하기 위해 가상 주소를 사용한다.
주기억장치 & 보조기억장치

CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억 장치로 내보내고(swap out) 다른 프로세스의 메모리를 불러오는 (swap in) 작업을 swap이라고 한다.
여기서하드 디스크에 있는 프로그램을 어떻게 메인 메모리에 적재할 것인지 판단해야한다.
연속 메모리 관리
고정 분할 기법 : Partition의 크기가 프로세스의 크기보다 커서 메모리가 남지만, 다른 프로세스가 사용할 수 없는 상태를 말한다.
ㅡ>내부 단편화 발생

동적 분할 기법 : 남아있는 메모리의 크기가 실행하고자 하는 프로세스보다 크지만, 연속적이지 않은 공간에 존재하여 실행하지 못하는 현상을 의미한다. ㅡ>외부 단편화 발

프로그램의 일부가 다른 주소 공간에 할당될 수 있는 기법. 단편화 문제를 해결하기 위해 제시된 기법. 외부단편화 해소 : 페이징, 내부단편화 해소 : 세그멘테이
페이징
- 메모리를 프로세스의 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식
- 프로그램이 실행 될 때 필요한 페이지만 골라서 메모리에 올림
- 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법

모든 프로세스는 하나의 페이징 테이블을 가지고 있으며, 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있다

장점
- 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에 외부 단편화가 생기지 않는다.
단점
- 내부 단편화 문제가 발생할 수 있다. 페이지 단위를 작게하면 해결할 수 있지만, 페이지 매핑 과정이 복잡해져 오히려 비효율적이다.
세그멘테이션
세그먼테이션은 프로그램을 논리적인 덩어리(예: 코드, 데이터, 변수 등)로 나누는 방법 . 즉, 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것을 의미. 세그멘테이션은 프로세스를 물리적 단위인 페이지가 아닌 논리적 단위인 세그먼트로 분할해서 메모리에 적재하는 방식이다.돼지를 도축할 때, 페이징은 돼지를 같은 크기로 잘라서 보관하는 것이라면 세그멘테이션은 부위 별로 잘라서 보관한다고 이해하면 된다
장점
- 내부 단편화 문제가 해소된다.
- 보호와 공유 기능을 수행할 수 있다. 프로그램의 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있고, 같은 코드 영역은 한 번에 저장할 수 있다.
단점
- 외부 단편화 문제가 생길 수 있다.
페이지 교체 알고리즘(LRU, FIFO, LFU 등)
어떤 페이지를 디스크의 스왑 영역으로 보낼 것인지를 결정하는 알고리즘. 어떤 데이터를 내보내고 새로 올릴지 정
선입선출(First In First Out) 알고리즘
페이지 교체 시 물리적메모리에 가장 먼저 올라온 페이지를 우선적으로 내보내는 알고리즘
LRU(Least Recently Used Algorithm)
사용 가능성이 가장 낮은 페이지를 우선 내보내는 알고리즘. 페이지 교체 시 가장 오래전에 참조가 이루어진 페이지를내보낸다.
LFU(Least Frequentlyl Used Algorithm)
과거에 참조 횟수가 가장 적은 페이지를 교체시킬 페이지로 정하는 알고리즘
파일 시스템의 구조와 동작 원리
파일 시스템과 마운팅
마운트는 외부 저장 장치를 컴퓨터 안의 특정 폴더와 연결하는 일
- 예를 들어, USB에 그림을 저장해 두었는데, 이 USB를 컴퓨터에 꽂자마자 자동으로 열리는 "USB 폴더"가 바로 마운트된 상태
- 운영체제는 물리적인 디스크나 USB를 인식한 뒤, 파일 시스템을 마운트(mount) 하여 사용자가 접근할 수 있도록 만듬
파티션
파티션 : 디스크는 물리적으로 하나지만, 논리적으로 나눌 수 있습니다. 이 구간을 파티션(partition)이라
파일 공유와 네트워크 파일 시스템
NFS (Network File System)
한 컴퓨터의 디렉터리를 다른 컴퓨터에 마운트하여 공유함
사용자 입장에서는 로컬 디렉터리처럼 사용 가능
서버가 장애를 일으킬 경우 동기화 문제 발생 가능
가상 파일 시스템 (VFS) 🔗
학교에 영어, 한국어, 일본어를 쓰는 친구들이 있다고 상상해보자. 누군가가 무언가를 말하면, 각자 다른 언어로 반응한다. 그런데 모두가 통역기를 하나씩 가지고 있다면, 같은 말을 듣고도 서로 이해할 수 있다
운영체제의 VFS(Virtual File System) 는 이런 통역기 역할을 함. 다양한 파일 시스템(ext4, FAT, NTFS 등)이 존재하지만, VFS는 그 차이를 숨기고 같은 방식으로 파일을 읽고 쓰게 도와줌.
운영체제의 입출력 관리(버퍼, 캐시, 스풀링)
캐싱
캐시라고 하는 좀 더 빠른 메모리 영역으로 데이터를 가져와서 접근하는 방식
버퍼
버퍼링은 버퍼라고 하는 메모리 영역에 데이터를 모았다가 사용하는 동작.
스풀링
디바이스를 독점적으로 사용해야 하는 경우에 사용
프린트를 예로 들면, 프린팅해야하는 작업은 대기를 해야하는데, 이 때 추가로 프린팅해야하는 데이터를 디스크의 공간을 잡아서 버퍼링을 해놓게 된다. 이러한 방식을 스풀링이라고 함
시스템 콜, 커널 모드/유저 모드
유저모드
우리가 개발하는 프로그램은 일반적으로 유저 모드에서 실행
프로그램 실행 중 인터럽트가 발생하거나 시스템 콜을 호출하게 되면 커널모드로 전환됨
커널모드
커널이란 운영체제의 핵심 ,시스템의 전반을 관리/감독하는 역할
커널모드란 프로그램의 현재 cpu상태를 저장 , CPU에서 커널모드가 실행됨.
시스템콜
프로그램이 OS커널이 제공하는 서비스를 이용하고 싶을 때 시스템콜을 통해 실행
출처
https://steady-coding.tistory.com/524
https://hojunking.tistory.com/109
'컴퓨터구조+운영체제' 카테고리의 다른 글
| [컴퓨터 네트워크+운영체제] 운영체제의 역할과 프로세스/스레드 (0) | 2025.06.21 |
|---|---|
| [컴퓨터 네트워크+운영체제] CPU, 메모리, 저장장치의 원리와 성능 (0) | 2025.06.09 |
| [컴퓨터구조+운영체제] 컴퓨터 구조와 데이터 표현의 기초 (3) | 2025.06.08 |