본문 바로가기
CS

[CS / 운영체제] 3.3 프로세스와 스레드 - 1

by 개발하는 감자입니다 2024. 5. 23.
728x90

 

 

안녕하세요! 개발감자입니다.

오늘은 CS의 운영체제 중에서도 3.3 프로세스와 스레드에 대해서 정리해보았습니다.


3.3 프로세스와 스레드

프로세스 : 컴퓨터에서 실행되고 있는 프로그램, CPU 스케줄링의 대상이 되는 작업이라는 용어와 비슷함

스레드 : 프로세스 내 작업의 흐름

3.3.1 프로세스와 컴파일 과정

  • 프로세스
    • 프로그램으로부터 인스턴스화된 것
    • 구글 크롬 프로그램(실행파일) 실행 → 프로세스 시작
    • 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역 → 실행할 수 잇는 파일이 되는 것
    • 프로그램 : C언어 기반의 프로그램 (컴파일 과정 없이 한 줄 씩 읽어들이는 프로그램과는 다름)
  • 전처리
    • 소스코드의 주석을 제거 → #include 등 헤더 파일을 병합 → 매크로 치환
  • 컴파일러
    • 오류 처리, 코드 최적화 작업
    • 어셈블리어로 변환
  • 어셈블러
    • 어셈블리어 → 목적 코드로 변환
    • 확장자 : .o(리눅스)
  • 링커
    • 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행파일을 만듦
    • 라이브러리의 종류 : 정적 라이브러리, 동적 라이브러리
    • 정적 라이브러리 : 프로그램 빌드 시 라이브러리가 제공하는 모든 코드를 실행파일에 넣은
      • 외부 의존도가 낮고 코드 중복 등 메모리 효율성이 떨어짐
    • 동적 라이브러리 : 프로그램 실행 시에 필요할 때만 DLL 이라는 함수 정보를 통해 참조
      • 메모리 효율성에서의 장점과 외부 의존도가 높아진다는 단점이 있음

3.3.2 프로세스의 상태

  1. 생성 상태
    1. 프로세스가 생성된 상태
    2. fork(), exec() 함수를 통해 생성
    3. fork() : 부모 프로세스의 주소 공간을 그대로 복사 → 새로운 자식 프로세스를 생성 (복사만 하고 부모 프로세스의 작업을 상속하지는 않음)
    4. exec(): 새롭게 프로세스를 생성
  2. 대기 상태
    1. 메모리 공간이 충분하면 메모리를 할당
    2. 메모리 공간이 충분하지 않으면 아닌 상태고 대기 → CPU 소유군이 넘어오기를 기다리는 상태
  3. 대기 중단 상태
    1. 메모리 부족으로 일시 중단된 상태
  4. 실행 상태
    1. CPU 소유권과 메모리를 할당받고 인스턱션 수행 중인 상태
  5. 중단 상태
    1. 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태
    2. IO 디바이스에 의한 인터럽트로 많이 발생함
  6. 일시 중단 상태
    1. 대기 중단과 유사
    2. 중단된 상태에서 프로세스 실행 시도 ⇒ 메모리 부족으로 일시 중단
  7. 종료 상태
    1. 메모리와 CPU 소유권을 모두 놓고 가는 상태
    2. 자연스럽게 종료 혹은 부모 프로세스가 자식 프로세스 강제 종료시키는 종료 (비자발적 종료도 있음

3.3.3 프로세스의 메모리 구조

운영체제는 프로세스에 적절한 메모리를 할당

동적 영역 : 스택(위 주소부터 할당) , 힙(아래주소부터 할당)

정적 영역 : 데이터 영역, 로드 영역

  1. 스택
    1. 지역변수, 매개변수, 함수 저장
    2. 동적, 컴파일 시에 크기가 결정됨
    3. 함수가 함수를 재귀적으로 호출 → 동적으로 크기 늘어날 수 있음 → 힙과 스택 사이의 공간을 비워놓음
    1. 동적 할당할 때 사용되며 런타임 시 크기가 결정 됨
    2. 벡터 같은 동적 배열은 당연히 힙에 동적 할당
  2. 데이터 영역
    1. 전역 변수, 정적 변수 저장
    2. 정적인 특징을 갖는 프로그램 종료 시 사라지는 변수가 들어있는 영역
    3. BSS 영역과 Data 영역으로 나뉨
    4. BSS 영역 : 초기화 되지 않은 변수가 0으로 초기화되어 저장
    5. Data영역 : 0이 아닌 다른 값으로 할당된 변수들이 저장
  3. 코드 영역
    1. 프로그램에 내장되어 있는 소스 코드가 들어있는 영역
    2. 수정 불가능한 기계어로 저장, 동적임

 


 

 

 

면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고

면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면

product.kyobobook.co.kr

 

이 포스팅은 면접을 위한 CS 전공지식 노트를 기반으로 작성되었습니다.

728x90
반응형