OS

seonh0·2022년 4월 21일

Os

목록 보기
1/1

프로그램이란?

  • 어떤 작업을 위해 실행할 수 있는 파일

프로세스란?

  • 컴퓨터에서 실행되고 있는 컴퓨터 프로그램
  • Code, Data, Stack, Heap의 구조를 할당받음
  • 각 프로세스는 별도의 공간에서 실행됨 따라서 기본적으로는 서로 접근불가
  • 접근을 하기위해서는 프로세스간의 통신을 이용
  • ex> 파이프, 파일, 소켓등 이용

스레드란?

  • 프로그램 실행 시 프로세스 내부에 존재하는 경로이자 실제로 작업담당
  • Code, Data, Heap영역 공유, Stack은 공유x
  • 프로세스가 CPU로 부터 받은 자원을 이용하여 실행하는 단위
  • 기본적으로 프로세스마다 최소 1개의 스레드가 있음
  • ex> vsCode - 프로세스
    vsCode로 실행중인 파일들 - 스레드

싱글스레드

  • 하나의 프로세스에는 하나의 스레드만존재함 따라서 하나의 일만 처리가능
  • 각 작업은 순차적으로 진행 ex) 1>2>3>4순으로

멀티스레드

  • 하나의 프로세스내에 두가지 이상의 스레드존재 따라서 동시에 여러가지의 일처리 가능

Code영역

  • 프로세스 실행할 코드가 기계어로 저장된 공간
  • 중간코드 수정불가 Read Only

Data영역

  • 정적변수, 전역변수 등이 저장된 공간
  • 변수 수정가능, Read and Write

Heap영역

  • 사용자가 직접 관리할 수 있는 그리고 그렇게 해야만하는 메모리영역
  • 사용자에 의해서 동적으로 할당, 해제
  • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당

Stack영역

  • 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역
  • 함수의 호출과 함께 할당, 호출완료시 소멸
  • 함수의 호출정보 -> 스택프레임
  • push로 저장, pop으로 인출
  • 후입선출방식으로 동작

Heap과 Stack의 차이

  • 스택은 지역변수로 엑세스를 하기때문에 전역변수로 엑세스를 하는 힙보다 상대적으로 엑세스가 빠르다.
  • 스택은 크기제한이 존재
  • 스택은 효울적으로 cpu가 메모리를 관리
  • 힙은 메모리를 직접 효율적으로 관리해줘야함
profile
1111

0개의 댓글