전체 글 100

[크래프톤 정글 Week 08 ] Pintos-project1-Priority Scheduling 키워드 정리

Pintos-project1-Priority Scheduling 키워드 정리이 포스트 는 Pintos-Project1 의 과제중 Priority Scheduling 구현 에 필요한 내용을 담고있습니다." Project 1 에서 구현하게될 Alaram clock , Priority scheduler , MLFQS 전부 스케쥴링 방법 이라기 보다 스케쥴러가 실행 시킬 스레드를 선택 하기위한 ready 큐 에 스레드를 어떤 순서로 삽입 할지에 대한 방법론 인 것이다."Alaram Clock 에서는 스레드를 Ready 큐 에 정렬 하기 위해 기준을 시간을 사용하여 일정 간격으로 스레드를 재우고 깨웠다면 Priority scheduler 에서는 우선순위를 사용하여 스레드의 우선순위 가 높은 순으로 정렬 하여 Re..

cs 2024.11.14

[크래프톤 정글] Pintos-project1-AlaramClock 구현 하기

Timer Interrupt 를 이용한 Aalram Clock 기능 구현 하기본 포스트 는 Pint OS 의 Project1 의 기능중 Alaram Clock 구현에 대한 내용을 담고 있습니다. 관련 용어는 이전포스트에 작성되어 있으며 해당 기능에 대해 딥다이브 한 내용이 이기에 복잡 할 수 있습니다.Timer Interrupt알람 클락(Alarm Clock)의 구현에서 사용되는 타이머 인터럽트는 시스템 타이머 칩에 의해 일정 주기로 발생하는 하드웨어 인터럽트다.타이머 인터럽트는 시스템이 시간을 기반으로 작업을 스케줄링하고 관리할 수 있도록 주기적으로 CPU에 신호를 보낸다.타이머 칩이 발생시키는 일정한 주기의 인터럽트 덕분에, 운영체제는 특정 시간 간격마다 CPU에 접근하여 작업 전환, 문맥 전환, 대..

cs 2024.11.14

[크래프톤 정글 week 08] Pintos-Project1 키워드 정리

Pintos-kaist-project1 Alaram Clock 키워드 정리이 포스트에서는 project1의 Alarm Clock을 구현하는 데 있어 필요한 키워드만 정리한다.ProcessCS 전반을 깊게 다루어 보면서 이전에도 마찬가지 였지만 항상 이 추상화 라는 개념이 항상 잘 이해가 되지 않았었는데 다른 여러 개념을 다루면서 어느정도 감을 잡을 상태였다.내가 생각했던 프로세스는 단순히 커널에서 이루어지는 작업을 분류 하고 운영체제가 작업의 관리 를 수월 하게 하기 위한 거라고만 생각하고 있었는데 도무지 이 프로세스가 운영체제 에서 어떻게 사용되는지 감이 잡히지 않고 있었다. 그러다 운영체제 책 을 읽던중 추상화 에 대한 내용을 읽었는데 자바에서도 추상화를 이용해 클래스의 구현 내용을 숨기는 것 처럼 ..

cs 2024.11.12

[크래프톤 정글] 메모리 관리 기법

1. 프로그램 실행사용자가 쉘에 ./hello를 입력하여 hello 프로그램을 실행한다.2. Fork 호출쉘 프로세스는 새로운 프로세스를 생성하기 위해 fork() 시스템 콜을 호출한다.이 호출로 인해 두 개의 프로세스가 존재하게 된다:부모 프로세스: 쉘.자식 프로세스: hello 프로그램을 실행하기 위해 생성된 프로세스.3. 메모리 공유부모와 자식 프로세스는 처음에 같은 가상 메모리 주소 공간을 공유한다.이때, 두 프로세스는 같은 물리 메모리를 참조하고 있어 메모리 사용이 효율적이다.4. 쓰기 발생부모 또는 자식 프로세스 중 하나가 가상 메모리에 쓰기를 시도할 경우 페이지 폴트가 발생하게 된다.이때, COW(Copy-On-Write) 메커니즘이 개입하여 두 프로세스 간의 물리 메모리 공유를 분리한다.5..

cs 2024.10.24

[크래프톤 정글] 동적 메모리 할당기 총정리

동적 메모리 할당기 총정리동적 메모리 할당기는 프로그램 실행 중에 필요에 따라 메모리를 동적으로 할당하고 해제하는 시스템이다. 이 메모리 관리 방법은 고정된 크기의 메모리 할당이 아닌, 동적인 메모리 사용을 허용하며, 프로그램의 유연성을 높인다. 동적 메모리 할당기를 구현하는 방법은 여러 가지가 있으며, 각각의 방식은 메모리 사용 효율성, 성능, 단편화 문제 등에 대한 다른 접근 방식을 제공한다.1. 동적 메모리 할당기의 개념동적 메모리 할당기는 다음과 같은 핵심 기능을 수행한다:할당(allocation): 필요한 크기만큼 메모리 블록을 할당하고, 이 블록의 주소를 반환한다.해제(deallocation): 사용이 끝난 메모리 블록을 해제하고, 해당 블록을 가용 메모리로 다시 돌려놓는다.프래그멘테이션 관리..

cs 2024.10.16

[크래프톤 정글] 컴퓨터 시스템 hello.c 실행 전체 플로우 정리

우리가 프로그램을 실행하기까지의 전체 과정을 설명하면, 먼저 hello.c 파일을 작성한 후 빌드를 시키면 다음과 같은 과정들이 차례대로 진행된다.1. 전처리 과정헤더 파일 확장: #include로 포함된 헤더 파일들이 실제 코드로 확장된다.매크로 확장: #define으로 정의된 매크로가 코드에 삽입된다.주석 제거: 소스 코드 내 모든 주석이 제거된다.이 과정을 통해 전처리가 완료되며, 그 결과물은 .i 파일로 저장된다.2. 컴파일 과정구문 분석: 소스 코드의 문법을 검사하여 파싱한다.구문 트리 생성: 구문 트리를 생성하여 코드의 구조를 분석한다.중간 표현(IR): 구문 트리를 기반으로 중간 표현(Intermediate Representation)으로 변환된다.어셈블리 코드 생성: 중간 표현을 기반으로 ..

cs 2024.10.16

[크래프톤 정글] 동적 메모리 할당(CSAP 9.9장)

CSAPP 9.9장은 동적 메모리 할당에 관한 다양한 기법과 문제들을 다루고 있으며, 특히 malloc과 free 같은 C의 기본 메모리 관리 함수와 관련된 동작 원리와 구현 방식을 정리 해보고자 한다. 9.9.1 malloc과 free 함수malloc 함수는 동적으로 메모리를 할당하고, free 함수는 그 메모리를 해제하는 기본적인 함수이다.예시:#include #include int main() { int *arr = (int *)malloc(5 * sizeof(int)); // 5개의 정수 공간 할당 if (arr == NULL) { printf("메모리 할당 실패\n"); return 1; } for (int i = 0; i 이 예시는 malloc을 ..

cs 2024.10.14

[크래프톤 정글] c프로그래밍에서의 고통된 메모리 관련 버그(CSAP 9.11장)

다음은 CSAPP 9.11장에서 설명된 메모리 관련 버그들에 대한 설명과 각 상황에 대한 예시를 들어 정리 해보고자 한다.9.11.1 잘못된 포인터 역참조잘못된 포인터를 역참조하면 가상 메모리의 잘못된 위치를 참조하게 되어 프로그램이 비정상 종료된다.예시:int *ptr = NULL;*ptr = 100; // NULL 포인터 역참조, 프로그램이 종료됨위 코드는 NULL 포인터를 역참조하려고 하기 때문에 실행 중에 프로그램이 크래시된다.9.11.2 초기화되지 않은 메모리 읽기초기화되지 않은 메모리를 읽으면 해당 메모리에는 쓰레기 값이 포함될 수 있다.예시:int *arr = (int *)malloc(5 * sizeof(int));printf("%d\n", arr[0]); // 초기화되지 않은 메모리 읽..

cs 2024.10.14

2~3주차 회고

이 글을 쓰는 시점은 이제막 3주차가 끝난 시점이다. 사실 2,3 주차 는 1주차 와 똑같은 생활의 연속이었기에 2,3 주차 회고 를 같이 쓰려한다.알고리즘2~3 주차 통틀어 bfs, dfs, dp , 그리디 알고리즘 등을 다루며 알고리즘에서 가장 기초가 되고 중요한 개념들을 익혔던 2주 였는데 그만큼 그 어떤 것 하나도 쉽게 가는 법이 없었다. dfs , bfs는 좀만 익숙 해질만 하면 응용 문제들이 나왔고 , dp 에서는 분명 점화식 을 찾는 감만 잡으면 될거 같았는데 문제만 보면 머리가 하애지는 하루들의 연속 이었다. 한가지 얻은게 있다면 확실히 풀면 풀수록 스스로 알고리즘에 대해 익숙해지고 있다는 것을 느끼게 되었고, 많이 풀어보며 많은 문제 익숙 해지는것이 유일한 방법이라는 것을 알게 되었다. ..

크래프톤 정글 2024.10.14