재로그
Preview Image

핀토스: 프로젝트 1 - Threads (2)

우선순위 스케줄링 우선선순위 스케줄링이란, 쓰레드 별로 설정된 우선도(Priority)에 따라 자원 할당이 되는 스케줄링 기법이다. 이번 과제의 구현에 앞서 항상 염두해야 할 사항 두 가지를 미리 정의했다. 더 높은 우선순위의 쓰레드가 ready_list에 들어오면 그 즉시 양보해야 한다. 실행중인 쓰레드의 우선순위는 언제든 바꿀 수 있지...

Preview Image

핀토스: 프로젝트 1 - Threads (1)

핀토스 7주차까지 어찌어찌 생존해 드디어 전산학 과정의 꽃이라고 불리는 운영체제 주차로 넘어왔다. 크래프톤 정글이 갖는 다른 교육들과의 차이점, 핀토스. 이번엔 정말로 나와 우리 팀의 힘으로 해보고 싶었고, 마침 팀원들의 생각도 같았기에 정답 코드는 물론이고, 직접 제공되지 않은 외부 영상 또는 다른 블로그를 가능한 참고하지 않고 진행해보기로 했다...

nil}" alt="Preview Image" >

프록시

프록시 프록시란? 인터넷 접속을 할 때, 빠른 액세스나 안전한 통신등을 확보하기 위해 사용되는 중계 서버를 프록시 서버라고 한다. 프록시를 사용하지 않고 서버에 요청을 보내면 다음과 같이 서버에 IP 주소가 노출된다. 출처:Upguard 프록시 서버는 클라이언트와 서버 사이에 위치하며, 클라이언트의 요청을 대신 받아 서버에 전달하고, 서버의 ...

nil}" alt="Preview Image" >

[백준] 18870 좌표 압축

문제 설명 문제 링크 문제를 처음 확인해보면 설명이 다소 불친절하다고 느껴지지만, 아래의 예제 입출력을 보고 나면 무엇을 해야할지가 꽤 명확해진다. -10^9^ 부터 10^9^까지 있는 수직선 상에 있는 점들을 가장 작은 수부터 큰 수까지 0부터 N까지 나열하라는 문제다. 여기서, 입력값에 같은 수가 나온다면 해당 수는 새로 나열되어도 같...

nil}" alt="Preview Image" >

[백준] 2156 포도주 시식

문제 설명 문제 링크 문제를 살펴보면, 연속으로 놓은 포도주를 2번까지만 마실 수 있고, 연이은 두개를 마시는 경우에는 무조건 하나를 건너뛰어야 한다는 점을 알 수 있다. 문제 풀이 동적 계획법을 사용하여 풀 수 있다. 점화식만 잘 세우면 크게 어렵지 않은 문제이기 때문에 점화식을 잘 세우고 Bottom-Up 방식으로 cache를 채워서 최...

nil}" alt="Preview Image" >

완전탐색

완전탐색 완전탐색 알고리즘은 가능한 모든 경우의 수를 탐색하여 문제를 해결하는 방식이다. 모든 가능성을 시도하면서 필요한 답을 찾아내는 방식으로 동작한다. 이는 간단하고 직관적이지만, 많은 경우에 있어 효율성이 낮은 편이다. 완전 탐색의 특징으로는 다음이 있다: 모든 가능한 경우 고려: 문제에 대한 모든 가능한 경우의 수를 검사한...

nil}" alt="Preview Image" >

Exceptional Control Flow

ECF 예외적인 제어흐름 (exceptional control flow, ECF)은 운영체제가 입출력, 프로세스, 가상메모리 등을 구연하기 위해 사용하는 기본 메커니즘이다. ECF를 이해하면 응용 프로그램들이 어떻게 운영체제와 상호작용 하는지 이해하는데에 도움이 된다. 응용 프로그램은 트랩 또는 시스템 콜이라고 알려진 ECF의 한 가지 형태를 사용해...

nil}" alt="Preview Image" >

동적 메모리 할당기

동적 메모리 할당기 저수준의 mmap과 munmap 함수들을 사용하여 가상메모리의 영역을 생성하고 삭제할 수 있지만, 대개 추가적인 가상메모리를 런타임에 획득할 필요가 있을 때 동적 메모리 할당기라는 것을 사용하는 것이 편리하고 호환성이 좋다고 여겨진다. 동적 메모리 할당기는 heap, 즉 프로세스의 가상 메모리 영역을 관리한다. 할당기는 힙을 다...