[CS 면접 질문 / OS]프로세스와 스레드

2024. 12. 12. 17:48·면접 준비/OS
728x90
반응형
SMALL

 

아래 내용은 이 책을 공부하고 정리한 내용입니다.

프로세스와 스레드

프로세스에는 사용자가 보는 공간에서 사용자와 상호작용하며 실행되는 포그라운드 프로세스 가 있고, 사용자가 눈에는 보이지 않지만 뒤에서 조용히 수행되는 백그라운드 프로세스가 있다.
백그라운드 프로세스 중에는 데몬이라는 프로세스가 존재하는데 우리가 흔히 아는 서비스를 말한다.
이 두가지 프로세스 유형은 동일한 구조를 갖고 있다.

이 부분은 자바와 JVM을 공부하면서 들어봤을 만한 내용일 것이다.

 

코드 영역

실행 가능한 명령어가 저장되는 공간
텍스트 영역이라고도 부른다.
CPU가 읽고 실행할 명령어가 담겨 있기 때문에 쓰기가 금지되어 있는 읽기 전용 공간

데이터 영역

프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
데이터 영역에 저장되는 데이터는 정적 변수 또는 전역 변수가 대표적이다.

BSS 영역

BSS 영역은 데이터 영역과 유사하지만 초기화 여부가 다르다. 초깃값이 있는 정적 변수나 전역 변수의 경우에는 데이터 영역에 저장되지만, 초깃값이 없는 데이터는 BSS에 저장된다.

힙 영역

프로그램을 만드는 사용자(개발자)가 직접 할당 가능한 저장 공간이다.
프로그램 실행 도중 비교적 자유롭게 할당 및 사용 가능한 메모리 공간이다.
하지만 자유롭게 할당이 가능하기에 사용하지 않는 메모리를 반환하지 않으면 메모리 누수문제가 발생한다.
그래서 JVM과 같은 프로그래밍 언어에서는 사용되지 않는 힙 메모리를 해제하는 가비지 컬렉션 기능이 제공되고 한다.

스택 영역

데이터 영역에 담기는 값과 달리 일시적으로 사용할 값들이 저장되는 공간이다.
함수의 실행이 끝나면 사라지는 일회성이며 매개변수, 지역변수, 함수 복귀 주소 등이 스택영역에 저장된다.
스택 영역에서는 스택 트레이스란 개념이 있다.

스택 트레이스란?

특정 시점에 스택 영역에 저장된 함수 호출 정보이다. 스택 트레이스로는 문제의 발생 지점을 추적할 수 있어 디버깅에 매우 유용하게 사용된다.


PCB와 문맥 교환

메모리에 적재된 다수의 프로세스를 관리하려면 각각의 프로세스를 식별할 수 있는 커널 영역 내의 정보가 필요하다.
이 정보가 Process Control Bloc이다.
PCB는 프로세스와 관련된 다양한 정보를 내포하고 있는 구조체(struct)다. 그리고 새로운 프로세스가 메모리에 적재되었을 때 커널 영역에 만들어지고, 프로세스의 실행이 끝나면 폐기된다.
PCB에 담기는 정보는 운영체제마다 차이가 있지만 식별 번호인 PID(Process ID)와 실행 과정에서 사용한 레지스터 값,프로세스 상태, CPU 스케줄링(우선순위) 정보, 메모리 관련 정보, 파일 및 입출력장치 관련 정보가 기재되어 있다.

구조체란?

다른 자료형으로 이루어진 데이터를 하나로 묶어 활용할 수 있는 복합 자료형의 일종

PCB 테이블

여러 PCB들은 실행 중인 동안에 PCB 테이블에 저장된다. 새롭게 실행되는 프로세스가 있다면 PCB프로세스 테이블에 해당 PCB를 추가하고, 종료되는 프로세스가 있다면 사용 중이던 자원을 해제하고 PCB도 프로세스 테이블에서 해제한다.


타이머 인터럽트(타임아웃 인터럽트)

프로세스는 자신의 차례가 되면 정해진 시간만큼 CPU를 이용하고, 타이머 인터럽트가 발생하면 자신의 차례를 양보하고 다음 차례가 올 때까지 기다린다.

예시

프로세스A는 타이머 인터럽트가 발생하면 프로세스 B에 CPU 사용을 양보한다고 가정했을 때, 프로세스 A는 프로그램 카운터를 비롯한 각종 레지스터 값과 메모리 정보, 실행을 위해 열어뒀던 ㄴ파일 ㅈ어보, 사용한 입출력장치 등에 대한 중간 정보를 유실하지 않기 위해 저장해 둘 공간이 필요하다.
이러한 프로세스의 재개를 위해 기억해야 할 정보를 문맥이라고 한다.
이 문맥은 해당 프로세스의 PCB에 기록된다.
운영체제는 해당 프로세스이 PCB에 문맥을 백업하고 그다음 실행할 프로세스의 PCB에서 정보를 가져온다.
이렇게 타이머 인터럽트에 의해 교체되는 작업에서 문맥을 통해 정보를 가져오고 새로운 프로세스를 실행하는 것을 문맥 교환이라고 한다.

문맥 교환

문맥 교환은 프로세스가 자주 번갈아가며 많은 프로세스를 동시에 실행하므로 빈번하게 일어날 수도 있다.
하지만 너무 잦은 문맥 교환이 발생하면 캐시 미스가 발생할 가능성이 높아져 메모리에서 실행할 프로세스의 내용을 가져오는 작업이 증가하고, 이는 성능이 저하되는 결과를 초래할 수 있다.

 

728x90
반응형
SMALL

'면접 준비 > OS' 카테고리의 다른 글

[CS 면접 질문] OS - 운영체제 관련 질문 리스트  (1) 2024.12.23
[CS 면접 질문 / OS] 가상 메모리, 페이징, 내부 단편화, 외부 단편화, 페이지 교체 알고리즘  (0) 2024.12.19
[CS 면접 질문/ OS] 동기화와 교착 상태  (0) 2024.12.13
[CS 면접 질문/ OS] 멀티 프로세스와 멀티, IPC, Pipe, Siganl 개념  (0) 2024.12.12
[CS지식/ OS] 커널과 시스템 콜  (0) 2024.12.09
'면접 준비/OS' 카테고리의 다른 글
  • [CS 면접 질문 / OS] 가상 메모리, 페이징, 내부 단편화, 외부 단편화, 페이지 교체 알고리즘
  • [CS 면접 질문/ OS] 동기화와 교착 상태
  • [CS 면접 질문/ OS] 멀티 프로세스와 멀티, IPC, Pipe, Siganl 개념
  • [CS지식/ OS] 커널과 시스템 콜
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (314)
      • 면접 준비 (36)
        • OS (6)
        • Spring Security (0)
        • Java (2)
        • DB (9)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      CSS
      Til
      백준
      자바 면접질문
      redis 채팅
      JSP
      자바기초
      HTML
      리눅스마스터2급
      springsecurity
      자바스크립트
      리눅스마스터2급정리
      JS
      자바 알고리즘
      Spring Data Redis
      jsp기초
      자바 반복문
      Springframework
      Spring
      레디스
      jsp request
      자바
      자바 면접
      java
      리눅스
      스프링프레임워크
      프로그래머스
      redis
      spring redis
      JavaScript
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [CS 면접 질문 / OS]프로세스와 스레드
    상단으로

    티스토리툴바