소프트웨어 기술(스타트업 위주)
컴퓨터구조
컴퓨터구조 정리 입니다.
CPU 및 운영체제 개념
1. Process and Threads
프로세스(Process)란?
- 실행 중인 프로그램을 의미하며, 메모리 공간과 시스템 자원을 할당받음.
- 독립적인 실행 단위로서, 다른 프로세스와 메모리를 공유하지 않음.
쓰레드(Thread)란?
- 프로세스 내에서 실행되는 작은 실행 단위.
- 같은 프로세스 내의 다른 쓰레드들과 메모리(Heap, Code 영역)를 공유.
- 프로세스 내에서 병렬 작업을 수행할 수 있도록 도와줌.
특징 비교
특징 | 프로세스 | 쓰레드 |
---|---|---|
메모리 공유 | 별도 공간 사용 | 같은 프로세스 내 공유 |
실행 단위 | 독립 실행 | 프로세스 내에서 동작 |
문맥 전환 | 무겁고 느림 | 가볍고 빠름 |
생성 비용 | 높음 | 낮음 |
예시
- 프로세스 예시: Chrome 브라우저를 실행하면 하나의 프로세스로 동작.
- 쓰레드 예시: Chrome에서 여러 개의 탭을 열면 각 탭이 별도 쓰레드로 실행됨.
2. Concurrency in Multiple Cores
병렬성과 동시성
- 동시성(Concurrency): 한 개 이상의 작업이 번갈아 실행됨 (싱글 코어에서도 가능).
- 병렬성(Parallelism): 여러 개의 작업이 동시에 실행됨 (멀티코어 환경 필요).
멀티코어 환경에서의 병렬 실행
- CPU가 여러 개의 코어를 가지고 있을 경우, 여러 개의 쓰레드를 병렬로 실행 가능.
- 멀티스레딩 프로그램은 여러 개의 코어를 활용하여 성능을 극대화함.
예시
- 동시성: 싱글 코어 CPU에서 웹 브라우저와 음악 플레이어가 번갈아 실행됨.
- 병렬성: 멀티코어 CPU에서 한 코어는 웹 브라우저, 다른 코어는 음악 플레이어를 실행.
3. Scheduling Algorithms
CPU 스케줄링이란?
- CPU가 여러 개의 프로세스를 효율적으로 실행하도록 순서를 결정하는 기법.
4. CPU Interrupts
인터럽트란?
- CPU가 실행 중 특정 이벤트(하드웨어 요청, 예외 등)에 의해 실행을 멈추고, 해당 이벤트를 처리한 후 다시 원래 작업으로 복귀하는 메커니즘.
종류
- 하드웨어 인터럽트
- 키보드 입력, 마우스 클릭, 네트워크 패킷 수신 등 외부 장치의 요청으로 발생.
- 소프트웨어 인터럽트
- 시스템 호출(Syscall)이나 예외(Exception) 등 프로그램 내부에서 발생.
- 타이머 인터럽트
- 특정 시간 간격마다 발생하여 CPU 스케줄러가 프로세스를 교체하는 역할 수행.
인터럽트 처리 과정
- 현재 실행 중인 작업 저장 (문맥 저장, Context Save).
- 인터럽트 핸들러 실행.
- 원래 작업 복귀 (문맥 복구, Context Restore).
5. Processes VS Threads
프로세스 vs 쓰레드 비교
항목 | 프로세스 | 쓰레드 |
---|---|---|
메모리 공유 | X (독립적) | O (같은 프로세스 내 공유) |
문맥 전환 비용 | 높음 | 낮음 |
실행 속도 | 상대적으로 느림 | 빠름 |
예제 | 웹 브라우저, 게임 | 웹 브라우저의 여러 탭, 멀티스레딩 서버 |
실제 사례
- 프로세스 기반 멀티태스킹: OS에서 여러 프로그램(Chrome, Word, Spotify 등)이 동시에 실행됨.
- 쓰레드 기반 멀티태스킹: 웹 서버가 여러 요청을 동시에 처리하기 위해 멀티스레딩 사용.
6. 프로세스 포킹, 동기화 기법
프로세스 포킹 (Process Forking)
정의
- 현재 실행 중인 프로세스를 복제하여 새로운 자식 프로세스를 생성하는 메커니즘
- 부모 프로세스의 메모리 공간을 완전히 복사하여 새로운 프로세스 생성
- 새로운 PID를 가지며 독립적으로 실행됨
장단점
장점 | 단점 |
---|---|
프로세스 생성이 빠름 | 메모리 사용량이 2배로 증가 |
부모와 자식 간 통신 가능 | 페이지 테이블 복사가 필요 |
독립된 주소 공간 제공 | 시스템 리소스 소비 증가 |
안전한 프로그램 테스트 가능 | 복잡한 메모리 관리 필요 |
7. 메모리 관리 (Memory Management)
정의
- 컴퓨터 시스템에서 메모리를 효율적으로 관리하는 기법
- 프로세스 간 메모리 보호와 할당을 담당
- 가상 메모리와 물리적 메모리의 매핑 관리
장단점
장점 | 단점 |
---|---|
메모리 보호 구현 가능 | 추가적인 오버헤드 발생 |
가상 메모리 지원 | 페이지 교체 알고리즘 필요 |
동적 메모리 할당 | 프래그먼테이션 문제 발생 |
멀티프로그래밍 지원 | 복잡한 관리 구조 필요 |
8. 락/뮤텍스/세마포어 (Lock/Mutex/Semaphore)
락 (Lock)
- 정의: 단순한 이진 동기화 메커니즘
- 특징: 한 쓰레드만이 임계 영역에 접근 가능
- 장점: 구현이 간단함
- 단점: 프로세스 간 동기화 불가능
뮤텍스 (Mutex)
- 정의: 상호 배제를 위한 커널 객체
- 특징: 소유권 개념이 있으며, 한 쓰레드만이 잠금 가능
- 장점: 프로세스 간 동기화 지원
- 단점: 교착상태 발생 가능성
세마포어 (Semaphore)
- 정의: 공유 자원에 대한 접근을 제어하는 카운터
- 특징: 여러 쓰레드가 동시에 접근 가능
- 장점: 복잡한 동기화 시나리오 구현 가능
- 단점: 구현이 복잡함
결론
CPU의 동작 방식과 프로세스, 쓰레드의 차이를 이해하면 효율적인 멀티스레딩 프로그래밍과 CPU 스케줄링 최적화가 가능합니다. 또한, 인터럽트 메커니즘을 활용하여 빠르고 안정적인 시스템을 구축할 수 있습니다.
- 프로세스 포킹은 새로운 프로세스 생성을 위한 강력한 메커니즘
- 메모리 관리는 효율적 자원 할당을 위한 필수 기술
- 락/뮤텍스/세마포어는 각각 다른 상황에서의 최적화된 동기화 솔루션 제공
- 적절한 선택은 시스템 요구사항과 성능 특성에 따라 달라짐