소프트웨어 기술(스타트업 위주)

컴퓨터구조

컴퓨터구조 정리 입니다.


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가 실행 중 특정 이벤트(하드웨어 요청, 예외 등)에 의해 실행을 멈추고, 해당 이벤트를 처리한 후 다시 원래 작업으로 복귀하는 메커니즘.

종류

  1. 하드웨어 인터럽트
    • 키보드 입력, 마우스 클릭, 네트워크 패킷 수신 등 외부 장치의 요청으로 발생.
  2. 소프트웨어 인터럽트
    • 시스템 호출(Syscall)이나 예외(Exception) 등 프로그램 내부에서 발생.
  3. 타이머 인터럽트
    • 특정 시간 간격마다 발생하여 CPU 스케줄러가 프로세스를 교체하는 역할 수행.

인터럽트 처리 과정

  1. 현재 실행 중인 작업 저장 (문맥 저장, Context Save).
  2. 인터럽트 핸들러 실행.
  3. 원래 작업 복귀 (문맥 복구, 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 스케줄링 최적화가 가능합니다. 또한, 인터럽트 메커니즘을 활용하여 빠르고 안정적인 시스템을 구축할 수 있습니다.

  • 프로세스 포킹은 새로운 프로세스 생성을 위한 강력한 메커니즘
  • 메모리 관리는 효율적 자원 할당을 위한 필수 기술
  • 락/뮤텍스/세마포어는 각각 다른 상황에서의 최적화된 동기화 솔루션 제공
  • 적절한 선택은 시스템 요구사항과 성능 특성에 따라 달라짐
Previous
컴퓨터구조