개발세발

12. 동적 할당 영역과 시스템 호출 본문

코딩공부/OS

12. 동적 할당 영역과 시스템 호출

뉼👩🏻‍💻 2023. 1. 7. 23:22
728x90
반응형
SMALL

 

 ◼️ 정적할당 영역 

: 코드영역과 데이터 영역

- 프로세스가 실행되기 직전에 위치와 크기가 결정되고 실행되는 동안 변하지 않으므로 정작 할당 영역이라고 부름 

 

 ◼️ 동적할당 영역 

: 스택영역과 힙 영역

- 프로세스가 실행되는 동안 만들어지는 영역으로 그 크기가 늘어났다 줄어들기도 하는 동적 할당 영역 

 

• 스택

: 함수 호출 시 두 가지 작업을 구현하기 위해 사용 

1. 호출한 함수가 종료되면 함수를 호출하기 전 코드로 되돌아와야 하는데 되돌아올 메모리의 주소를 스택에 저장함

 

2. 변수 사용 범위에 영향을 미치는 영역 scope을 구현할 때 사용 

- 전역변수 global variable - 모든 함수에서 사용 , 지역 변수 local variable  - 특정 함수에서만 사용

- 함수에서 사용하는 지역 변수는 함수가 호출될 때만 사용되다가 함수가 종료되면 사용한 공간을 반환해야 하는데, 지역 변수를 저장할 때 스택이 사용됨 

 

 힙

: 동적으로 할당되는 변수 영역

- 프로그램이 실행되는 동안 데이터 영역이 할당되는 것으로 대표적으로 malloc() 함수가 있음 

: malloc() 함수는 프로그램이 실행 중일 때 사용자가 직접 힙 영역에 메모리를 할당할 수 있게 해줍

➡️ 새로운 프로세스가 생성되면 malloc() 함수를 사용하여 프로세스 제어 블록의 구조체를 만들고 해당 큐에 삽입하며, 프로세스가 종료되면 free() 함수를 사용하여 해당 프로세스 제어 블록이 차지하던 메모리 공간을 반환함

 

 

 

◼️ exit() 시스템 호출

: 작업의 종료를 알려주는 시스템 호출

- exit() 함수를 선언함으로써 부모 프로세스는 자식 프로세스가 사용하던 자원을 빨리 거둬갈 수 있음 

- 전달하는 인자를 확인하여 작식 프로세스가 어떤 상태로 종료되었는지를 알려주는데 인자가 0이면 정상종료, -1 이면 비정상 종료임 

 

 

 

◼️ wait() 시스템 호출

- 운영체제가 부모 프로세스가 먼저 종료됨으로써 미아 프로세스가 생기는 것을 방지하기 위해 wait() 시스템 호출을 사용함

- 자식 프로세스가 끝나기를 기다렸다가 자식 프로세스가 종료되면 다음 문장을 실행함 

 

• 전면 프로세스 foreground process

   후면 프로세스 background process 

➡️ 그래픽 사용자 인터페이스가 아니라 텍스트만 사용하는 유닉스의 셸에도 전면 프로세스와 후면 프로세스 개념이 적용됨 

 

 

 

 

 

728x90
반응형

'코딩공부 > OS' 카테고리의 다른 글

14. 스케줄링 시 고려 사항  (0) 2023.02.10
13. 스케줄링의 개요  (0) 2023.01.10
11. 스레드  (0) 2023.01.06
10. 프로세스의 연산  (0) 2023.01.06
09. 프로세스 제어 블록과 문맥 교환  (0) 2023.01.02