이론 공부!/기술 면접 준비

[OS] Stack & Heap, 프로세스 & 스레드

TutleKing 2022. 8. 24. 21:56
  • Stack & Heap
    • Stack 메모리
      • 함수나 메소드가 호출될때 스택 프레임이 스택 메모리에 쌓인다
      • 그 스택 프레임 안에 매개 변수와 지역 변수가 저장됨
    • Heap 메모리
      • 모든 객체(Object)는 여기에 저장됨
    • 참조 변수
      • 객체의 메모리 주소값을 저장하는 변수
      • ex) Counter c = new Counter();
  • 프로세스, 스레드
    • 프로그램 : 컴퓨터가 실행 할 수 있는 명령어의 집합
    • 프로세스 : 컴퓨터에서 실행중인 프로그램
      • 각각의 프로세스는 독립된 메모리 공간을 할당 받음
    • 발전 순서
      1. 단일 프로세스 시스템 : CPU 하나에 한 개의 프로세스 동작
        1. CPU 사용률이 좋지 않음 → 여러개 프로그램을 메모리에 올려놓고 동시에 실행!
      2. 멀티 프로그래밍
        1. CPU 사용시간이 길어지면 다른 프로세스는 계속 대기 해야함
      3. 멀티 태스킹 : 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(quantum)만 CPU에서 실행
        1. 프로세스의 응답 시간을 최소화 시키는데 목적
        2. (= cpu 사용을 두고 여러개의 프로세스 혹은 스레드가 경합)
        3. 하나의 프로세스가 동시에 여러 작업을 수행하지는 못함
          1. 프로세스의 컨텍스트 스위칭은 무거운 작업임
          2. 프로세스끼리 데이터 공유가 까다로움
          3. 듀얼 코어가 등장했는데 잘 쓰고싶음
      4. 스레드의 등장 : 멀티 태스킹의 단점을 보완하기 위해
        1. 스레드 특징
          1. 프로세스는 한개 이상의 스레드를 가질 수 있다.
          2. CPU에서 실행되는 단위 (unit of execution)
          3. 같은 프로세스의 스레드 끼리는 컨텍스트 스위칭은 가볍다
          4. 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유
      5. 멀티스레딩
        1. 하나의 프로세스가 동시에 여러작업을 실행하는데 목적
        2. (=하나의 프로세스 안에 여러개의 스레드가 동작하여 명령어를 처리)
        3. 멀티 태스킹의 확장
          1. 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 cpu time을 나눠 갖는것
      6. 멀티프로세싱
        1. 두개 이상의 프로세서나 코어를 활용하는 시스템

지식 출처

https://www.youtube.com/channel/UCReNwSTQ1RqDZDnG9Qz_gyg/featured

 

쉬운코드

8년차 백엔드 개발자가 배워서 남주려고 만든 채널이에요 알기 쉽게 설명합니다 함께 성장했으면 좋겠어요 :)

www.youtube.com

 

반응형