Computer Science TIL 03

Nabang Kim·2021년 9월 9일
0

Computer Science

목록 보기
3/4
post-thumbnail

2021년 9월 9일에 작성된 문서 3번 입니다.
Computer Science 배운 내용을 정리했습니다.



1. 프로세스(Process)

운영체제에서는 실행 중인 하나의 애플리케이션

  • 사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행
    • 이때 실행되는 애플리케이션이 프로세스

예를 들어 Chrome 브라우저를 두 개 실행하면, 두 개의 프로세스가 생성됩니다. 이렇게 하나의 애플리케이션은 여러 프로세스(다중 프로세스)를 만들기도 합니다.

활성 상태창(macOS, Windows에서는 작업관리자) 예시



2. 스레드(Thread)

한 가지 작업을 실행하기 위해 순차적으로 실행한 코드

  • 하나의 스레드는 코드가 실행되는 하나의 흐름
  • 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다.



3. 멀티 스레드(Multi-Thread)

  • 멀티 태스킹: 두 가지 이상의 작업을 동시에 처리하는 것
    • 운영체제는 멀티 태스킹을 할 수 있도록, 프로세스마다 CPU 및 메모리 자원을 적절히 할당하고 병렬로 실행
  • 멀티 프로세스 : 애플리케이션 단위의 멀티 태스킹
  • 멀티 스레드 : 애플리케이션 내부에서의 멀티 태스킹

프로세스와 멀티 스레드 예시



프로세스와 스레드

프로세스와 스레드 구성

1. 스레드 특징

  • 프로세스 내에서 실행되는 흐름의 단위
  • 각 스레드마다 call stack이 존재
    • call stack: 실행중인 서브루틴을 저장하는 자료 구조
  • 스레드는 다른 스레드와 독립적으로 동작


2. 멀티 스레딩의 장점

  • 프로세스 간 통신 방법(IPC)에 비해 스레드 간의 통신 방법이 훨씬 간단
  • 시스템의 처리량(Throughput)이 향상
  • 자원 소모가 줄어들어 자연스럽게 프로그램의 응답 시간이 단축


3. 멀티 스레딩의 문제

  • 멀티 스레딩을 기반으로 프로그래밍할 때에는 공유하는 자원에 대하여 고민이 필요.

    서로 다른 스레드가 같은 데이터에 접근하고, 힙 영역을 공유하기 때문에 서로 다른 스레드가 서로 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정하는 일이 발생할 수 있다.

  • 멀티스레딩 환경에서는 동기화 작업이 필요.

  • 동기화를 통해 작업 처리 순서를 제어하고, 공유 자원에 대한 접근을 제어



4. 동시성과 병렬성

싱글 코어와 멀티 코어 예시

  • 동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 갯수로 제한.
  • 시분할 : 운영체제는 각 스레드를 시간에 따라 분할하여, 여러 스레드가 일정 시간마다 돌아가면서 실행되게한다.
    • Concurrency(동시성, 병행성): 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
    • Parallelism(병렬성): 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨



5. Context Switching

  • 다른 태스크(프로세스, 스레드)가 시작할 수 있도록 이미 실행중인 태스크(프로세스, 스레드)를 멈추는 것






Written with StackEdit.

0개의 댓글