C++방학숙제(운영체제 관련)

200원짜리개발자·2023년 8월 15일
0

C++

목록 보기
27/39

이번에 방학숙제로

프로세스, 스레드, 네임 맹글링 페이징 세그멘테이션, 커널 힙 알고리즘, vector, 덱의 이론

이러한 것들을 정리를 해오는 숙제를 받았기 때문에 한 번 정리해볼까 한다.

프로세스란

프로세스는 실행중에 있는 프로그램을 의미한다.
그래서 프로그램이 실행되어 메모리를 할당 바등면 프로세스가 된다.
프로세스 내부에는 최소 하나의 스레드를 가지고 있다.(실제로 스레드단위로 스케줄링을 한다)
하드 디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이때부터 프로세스라고 부른다.

스레드란

스레드란 프로세스내에서 실제로 작업을 수행하는 주체를 의미한다.
모든 프로세스에는 한 개 이상의 스레드가 존재한다.
또 두개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다.

네임 맹글링

프로그램에서 함수나 변수를 선언했을 때, 선언시 사용했던 이름을 컴파일러가 컴파일 단계에서 일정한 규칙을 가지고 변형하는 것으로, 네임 데코레이션이라고도 한다.

네임 맹글링은 링커가 다른 범위에 있는 같은 이름의 함수 및 변수들에 대해 구별을 가능하게 해준다.

다른 범위라는 것은 다른 네임 스페이스이거나 다른 파일일 때를 말한다.
같은 범위내에서는 함수 오버로딩을 예로 들 수 있다.

객체 지향에서 오버로딩 시 같은 함수명도 어떻게 구별되는 원리는 인자의 형식과 갯수가 다를 경우 네임 맹글링을 통해 함수나 변수명 뒤에 추가정보가 붙어 구별이 되는 것이다.

네임 맹글링은 컴파일러마다 다르기 때문에 정형화된 규칙이 없다.

페이징이란

페이징은 외부 단편화의 해결 방법으로, 주소를 불연속적으로 할당하는 메모리 관리 구조를 말한다.

페이징을 공부하면서 자주 등장하는 용어는
Page: 가상 메모리를 일정한 크기로 나눈 블록
Frame: 물리 메모리를 일정한 크기로 나눈 블록

페이지 크기 = 프레임 크기

자세한 것은 참고 블로그여기서 볼 수 있다.

세그멘테이션이란?

페이징이 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하는 것을 의미한다면
세그멘테이션은 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 의미한다.

세그멘테이션은 프로세스를 세그먼트의 집합으로 표현한다.

커널 힙 알고리즘이란

힙 트리 또한 이미 블로그에 정리해둔 글이 있어서 링크로 남겨두겠다.
힙 트리!

vector란

vector는 이미 블로그에 정리해둔 글이 있어서 링크로 남겨두겠다.
VECTOR

Deque란

양쪽 끝에서 삽입과 삭제를 모두 허용하는 자료의 구조이다. (선형구조)

즉, 스택과 큐의 복합 형태이다.

이상으로 정리를 마치도록 하겠다.

profile
고3, 프론트엔드

1개의 댓글

comment-user-thumbnail
2023년 8월 15일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기