Step-by-Step

[CS] 운영체제 본문

CS공부/기본기술

[CS] 운영체제

희주(KHJ) 2023. 11. 15. 22:45

운영체제

  • 하드웨어를 효율적으로 사용할 수 있게 관리하는 소프트웨어
  • 컴퓨터 사용자와 하드웨어 간 인터페이스로 동작하는 시스템 소프트웨어
  • 컴퓨터 시스템의 자원들을 효율적으로 관리하여, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임

 

 

프로그램

  • 컴퓨터에서 어떤 작업을 실행할 수 있는 정적의 상태 파일 (exe 파일)
  • 하드디스크 등에 저장되어 있는 실행 코드
  • 보조기억장치에 존재하며 실행되기를 기다리는 명령어와 정적인 데이터 묶음
  • 사용자가 원하는 일을 처리할 수 있도록 올바른 수행 절차를 표현해 놓은 명령어들의 집합

 

프로세스

  • 실행중인 프로그램
  • 운영체제로부터 실행에 필요한 자원을 할당받은 것
  • 일반적으로 작업(Job) 또는 태스크(Task)라고 함

 

 

메모리 구조

  • CODE 영역 : 컴파일 된 소스코드가 저장되는 영역 / 프로그램 실행 코드가 저장되는 영역
  • DATA 영역 : 전역 변수 / 정적 변수 / 초기화된 데이터가 저장되는 영역
  • HEAP 영역 : 동저긍로 생성되는 데이터가 저장되는 영역
  • STACK 영역 : 임시 데이터(함수, 지역변수 등)가 저장되는 영역

 

스택 프레임

  • 함수를 실행하면 함수 결과로, 리턴될 주소가 스택에 저장되고 함수의 지역 변수들이 차례로 스택에 쌓이게 됨
  • 함수가 다 실행되고 나면 스택에 있던 데이터들이 차례대로 삭제되고, 스택에 저장되어 있던 리턴될 주소도 지워지면서 해당 주소로 이동한다.
  • 스택을 이용하여 만든, 함수를 실행하기 위한 구조를 "스택 프레임"이라고 한다.

 

 

프로세스 구조

  • 각 프로세스는 독립된 영역 (Code Data Heap Stack)을 할당 받음
  1. Code 영역
    • 실행 명령을 포함하는 코드들이 들어가는 부분
    • 프로그램 시작할 때 컴파일한 프로그램(기계어)가 저장되어 있음
    • 읽기 전용 영역으로, 프로세스가 함부로 변경할 수 없고 변경 시 오류를 발생시킴
  2. Data 영역
    • 프로그램이 실행될 때 프로그램이 종료되면 시스템에 반환됨
    • 전역변수, 정적변수, 배열, 구조체 등이 저장됨
    • Data 영역은 다시 Data(GVAR) 영역과 BSS 영역으로 난무
    • 초기화된 데이터는 Data(GVAR) 영역에 저장되고, 초기화하지 않은 데이터는 BSS 영역에 저장
  3. Heap 영역
    • 메모리를 동적으로 할당할 때 사용되는 메모리 영역
  4. Stack 영역
    • 프로그램이 자동으로 사용하는 메모리 영역
    • 함수 호출과 관계되는 지역변수와 매개변수가 저장됨
    • 함수 호출시 생성되고 함수가 끝나면 반환됨

 

 

스레드

Thread는 어떤 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위

  • 프로세스 내에서 각 Stack만 따로 할당받고, Code Data Heap 영역은 공유함
  • 스레드는 프로세스 내 주소 공간이나 자원들(Heap 공간 등)을 같은 프로세스 내 스레드끼리 공유하며 실행
  • 같은 프로세스 내 여러 스레드들은 같은 Heap 공간을 공유
  • 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없음

 

멀티 프로세스 vs 멀티 스레드

멀티프로세스 vs 멀티 스레드

  멀티 프로세스 멀티 스레드
구조 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 구조 하나의 프로그램을 여러 개의 스레드로 구성하는 방식
장점 여러 개의 자식 프로세스 중 하나에 문제가 발생해도 다른 프로세스들이 있기 때문에 영향이 확산되지 않음 1. 멀티 스레드는 Stack을 제외한 자원들을 공유하기 때문에 Context Switching 시에 캐시 메모리를 비울 필요가 없고, 리소스를 아낄 수 있음

2. Stack 이외에 메모리를 공유하기 때문에 통신의 부담이 적음
단점 1. Context Switching 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등 오버헤드가 발생함

2. 프로세스는 각 독립된 메모리 영역을 가지고 있기 때문에 프로세스 사이에서 공유하는 메모리는 없음

3. Context Switching이 발생하면 캐시에 있는 모든 데이터를 모두 리셋하고 다시 캐시 정보를 불러와야 함
독립된 영역 때문에 프로세스 간 통신이 필요함
1. 내부의 메모리를 공유하고 있어서 한 프로세스의 스레드가 문제가 발생하면 해당 프로세스 안의 다른 스레드에도 문제가 발생

2. 같은 데이터를 공유하기에 동기화에 신경써야 함

 

 

Context Switching

  • 하나의 프로세스가 CPU를 사용중인 상태에서 인터럽트로 인해 다른 프로세스의 CPU 사용을 위해, 이전 프로세스 상태를 PCB에 보관하고 새로운 프로세스 상태를 적재하는 작업
  • 한 프로세스의 문맥(상태)는 프로세스 제어블록(PCB)에 기록되어 있음

 

 

 

 

'CS공부 > 기본기술' 카테고리의 다른 글

[CS] 메모리  (1) 2023.11.13
[CS] 데이터베이스  (1) 2023.11.04
[CS] 객체지향 프로그래밍  (0) 2023.11.04
Comments