[OS] Kaist Pintos project 2(USER PROGRAMS) 후기

유저 프로그램을 실행하기 위해서는 cmd line에서 실행할 프로그램의 이름과 인자들을 parsing 하고 레지스터와 스택에 passing 해야한다. argc와 argv의 시작 주소를 스택에 쌓았었는데 제대로 실행이 되지 않았다. 스택에 쌓는 대신 rdi와 rsi에 넣

2021년 2월 18일
·
0개의 댓글

[OS] Kaist Pintos project 1(THREAD) 후기

이제 OS가 어떻게 돌아가는지 아주 조금은 감이 오는 것 같다. 다행히도 핀토스의 악명에 비해서는 순조로운 한 주를 보낸 것 같다. 나머지 3개의 프로젝트도 팀원들과 잘 마무리 할 수 있도록 해야겠다. kaist pintos project1(thread)에서는

2021년 2월 3일
·
0개의 댓글

[LINUX] TINY webserver 만들기 (5) - TINY webserver 설계 (2)

말 그대로 uri를 나누는 함수이다. uri를 도메인, path, cgiargs으로 나눈다.cgiargs란 동적 컨텐츠의 실행파일에 들어갈 인자다.

2021년 1월 28일
·
0개의 댓글

[LINUX] TINY webserver 만들기 (4) - TINY webserver 설계

지금까지 공부한 내용으로 아주 작지만 기본 기능을 갖고 있는 웹 서버를 만들어보자.웹에 기초적인 내용이나 웹에서 컨텐츠를 제공하는 방법에 대해서는 코드를 살펴보며 간단하게 설명하도록 하겠다.

2021년 1월 27일
·
0개의 댓글

[LINUX] TINY webserver 만들기 (3) - 소켓 인터페이스 도움 함수

소켓 인터페이스스와 getaddrinfo 함수를 처음 배웠을 때 바로 사용하기란 쉽지 않을 것이다.그래서 이번에는 한번에 클라이언트의 clientfd, 서버의 listenfd를 생성해주는 함수를 만들어 사용해보자.

2021년 1월 26일
·
0개의 댓글

[LINUX] TINY webserver 만들기 (2) - 호스트와 서비스 변환

리눅스는 getaddrinfo와 getnameinfo라고 하는 강력한 함수들을 제공하는데 이들은 이진 소켓 주소 구조체들과 호스트 주소, 포트번호 사이의 변환을 가능하게 해준다.

2021년 1월 25일
·
0개의 댓글

[LINUX] TINY webserver 만들기 (1) - socket interface

클라이언트와 서버는 연결(connection)을 통해서 통신이 가능해진다. 소켓(socket)은 연결의 종단점이자 네트워크 상의 다른 프로세스와 통신하기 위해 사용되는 파일이다. 여기서는 일단 연결의 종단점 역할을 한다는 것만 기억해두자

2021년 1월 24일
·
0개의 댓글

[Linux] tmux를 사용해보자

tmux는 사용자가 단일 단말기 창 또는 원격 터미널 세션 안에서 여러 별도의 터미널 세션에 액세스할 수 있도록 여러 가상 콘솔을 다중화하는데 사용할 수 있는 응용 소프트웨어이다.

2021년 1월 23일
·
0개의 댓글

[C] 분리 가용 리스트를 이용한 동적 메모리 할당기 구현(MALLOC-LAB) (4)

마지막으로 분리 가용 리스트를 이용한 할당기를 만들어 보자. 분리 가용 리스트는 다수의 가용 리스트를 유지하며, 각 리스트는 거의 동일한 크기의 블록들을 저장한다. 기본적인 아이디어는 모든 가능한 블록 크기를 크기 클래스라고 하는 동일 클래스의 집합들로 분리하는 것이다

2021년 1월 21일
·
0개의 댓글

[C] 명시적 가용 리스트를 이용한 동적 메모리 할당기 구현하기(MALLOC-LAB) (3)

이번에는 명시적 가용 리스트(explicit free list)를 이용한 할당기를 구현해 보자.명시적 가용 리스트는 가용 블록을 일종의 명시적 자료구조로 구성해 가용 리스트들을 모두 연결한다. 가용 블록의 header와 footer를 제외한 영역은 할당되어 데이터가 들

2021년 1월 20일
·
0개의 댓글

[C] 묵시적 가용 리스트를 이용한 동적 메모리 할당기 구현하기(MALLOC-LAB) (2)

관련 내용에 대해서는 저번 포스팅에서 설명했기에 이번 포스팅에서는 묵시적 가용 리스트를 이용해 구현한 동적 메모리 할당기 코드를 보도록 하겠다. 코드 1. mm_init mm_init 함수는 초기 힙 영역을 할당하는 것과 같은 필요한 초기화들을 수행한다. 가용리스트

2021년 1월 19일
·
0개의 댓글

[C] 동적 메모리 할당을 직접 구현해보자 (MALLOC-LAB) (1)

아래 내용은 컴퓨터 시스템(computer systems: a programmer's perspective)의 '9.9장 - 동적 메모리 할당'의 내용을 재구성 하였습니다. 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상 메모리 영역을 관리한다.

2021년 1월 17일
·
0개의 댓글

[C] B+TREE를 구현해보자

B+TREE는 B-TREE와 거의 유사하지만 약간의 차이가 있다.B-TREE에서는 키와 데이터가 동일했지만 B+TREE에서는 키와 데이터가 분리되어있다.

2021년 1월 16일
·
0개의 댓글

[C] B-TREE를 구현해보자 (3)

이어서 노드의 병합과 삭제 과정을 살펴보겠다. 키를 삭제하는 연산을 수행했을 때에도 B-TREE의 속성 중 하나인 '모든 노드는 t(최소차수) - 1개 이상의 키를 가져야 한다.' 를 만족해야 한다. \

2021년 1월 15일
·
0개의 댓글

[C] B-TREE를 구현해보자 (2)

저번 게시글에 이어서 B-TREE의 연산 과정을 함수와 함께 간단히 보도록 해보자. 먼저 최소차수를 상수로 선언해준다. 키의 개수나 자식의 개수의 상한과 하한은 최소차수의 영향을 받으므로 자주 쓰게 될 것이다. 이어서 노드 구조체를 선언한다.

2021년 1월 13일
·
0개의 댓글

[C] B-TREE를 구현해보자 (1)

B-TREE > 전산학에서 B-트리(B-tree)는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. -위키백과 쉽게 말하자면 기존의 이진트리와

2021년 1월 11일
·
0개의 댓글

[백준 1520] 내리막길 (Python)

백준 1520 - 내리막길 문제를 풀 때 역으로 생각하는 편이 접근하기 쉬웠다. 시작점이 아닌 도착점에서 가까운 점들부터 도착점에서 그 점으로 갈 수 있는 경우의 수를 채우도록 구현을 했다.

2021년 1월 10일
·
0개의 댓글

[백준 1202] 보석 도둑 (Python)

백준 1202-보석도둑문제를 푸는 아이디어는 다음과 같다. 각 가방에 담을 수 있는 최대 가치의 보석을 담되 용량이 작은 가방부터 보석을 담는다.

2021년 1월 9일
·
0개의 댓글

[C] 포인터를 이용해 두 변수의 값을 서로 바꿔보자

위 코드는 변수 x와 y의 값을 서로 바꾸기 위해 짠 코드이다.과연 x와 y의 값은 바뀌었을까? 출력값을 확인해보면 바뀌지 않았다. 왜 바뀌지 않았을까?그 이유는 바로 swap함수는 x, y의 복사된 값을 인자로 받은 a, b를 서로 바꿨을 뿐이지 실제 x와 y를 바꾸

2021년 1월 8일
·
0개의 댓글

[백준 2253] 점프 (Python)

백준 2253 - 점프BFS를 이용한 풀이DP를 이용한 풀이문제를 보고 어떻게 DP로 풀어야할 지 감이 안잡혀서 BFS로 먼저 풀고 DP는 다른 풀이들을 보고 공부하며 코드를 작성해보았다.

2021년 1월 6일
·
0개의 댓글