운영체제란
-시스템의 자원과 동작을 관리하는 소프트웨어다. 프로세스,저장장치,네트워킹,사용자,하드웨어 등을 관리한다.
메모리구조
-메모리에는 크게 4가지 종류가 있다. CODE,DATA,HEAP,STACK이 있고,
CODE는 프로그램 소스코드
DATA는 전역벽수,정적변수가 할당되는 부분
HEAP는 사용자가 직접 관리하는 영역으로 데이터가 동적으로 할당되는 공간
STACK 는 함수의 호출정보,지역변수,매개변수들이 저장되는 공간
CODE 영역
-우리가 작성한 소스코드가 들어가는 부분이다. 즉 실행할 프로그램의 코드가 저장되는 영역이다.
DATA영역
-전역변수와 STATIC 변수가 할당되는 영역
-프로그램시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 소멸되는 영역
전역변수와 정적변수의 차이
전역변수는 함수나 클래스 외부에서 선언되는 변수이며 프로그램의 모든 부분에서 엑세스 가능
정적변수는 함수 또는 클래스내에서 선언되었지만 함수 또는 클래스가 실행완료된 후에도 값을 유지하는 변수
전역변수는 전역메모리 영역에 저장되므로 수정이 발생할수 있지만
정적변수는 다른함수나 클래스에서 엑세스 할수 없으므로 충돌의 위험이 줄어든다.
전역벽수는 프로그램 실행초기에 생성되어 프로그램 종료시 소멸되는 반면 정적 변수는 함수 또는 클래스가 실행될때 생성되어 프로그램 종료시 소멸된다.
STACK영역
-프로그램이 자동으로 사용하는 임시 메모리영역이다.
함수 호출 시 생성되는 지역변수와 매개변수가 저장되는 영역, 함수호출이 완료되면 사라진다.
HEAP 영역
-프로그래머가 할당/해제하는 메모리 공간이다.(JAVA에서는 GC가 자동으로 해제한다)
-이 공간에 메모리 할당하는 것을 동적할당이라고 부른다.
HEAP, STACK 영역은 사실 같은 공간을 공유한다.
HEAP이 메모리 위쪽 주소부터 할당되면 STACK 은 아래쪽부터 할당되는 식이다. 그래서 각 영역이 상대 공간을 침범하는 일이 발생할 수 있는데 이를 각각 HEAP OVERFLOW , STACK OVERFLOW이라고 칭하다.
가장 일반적으로 사용되는 메모리 할당 알고리즘
1.FIRST FIT
2.최적맞춤
3.BUDDY ALLOCATION (LINUX 커널에서 일반적으로 사용)
4.슬랩할당(LINUX 커널에서도 일반적으로 사용)
'CS > 운영체제' 카테고리의 다른 글
데드락 (0) | 2023.04.11 |
---|---|
CPU 스케쥴러 / 가상메모리 (0) | 2023.04.11 |
프로세스와 스레드의 차이 (0) | 2023.04.08 |