no image
PintOS 시작하기 + Project 1 개요
우선 PintOS 는 2004년 스탠포드 대학에서 만들어진 교육용 운영체제라고 한다. 해당 과정은 KAIST 에서 진행하는 KAIST PintOS 과정으로 진행된다. https://casys-kaist.github.io/pintos-kaist/ 처음에는 너무 방대한 양의 이론들과 자료들이 넘쳐나서.. 뭐부터 공부해야할지 갈피가 안잡혔는데 우선 코치님들이 PintOS 바이블이라고 설명해주신 Gitbook -> KAIST 강의 -> 한양대 강의 자료를 보고 프로젝트 진행의 갈피를 잡을 수 있었다. 1. PintOS 에서의 GDB 사용법 -g 옵션을 사용해서 컴파일 해야한다. 적절한 정보를 포함한 컴파일이 가능하다. GDB 실행 gdb [file] gdb로 인자 넘기기 (gdb) set args argumen..
2022.12.23
no image
Chapter 11. Network Programming
11.1 The Client-Server Programming Model 서버-클라이언트 모델 서버 프로세스는 한 개 또는 여러 개의 클라이언트 프로세스로 구성된다. 서버 : 리소스 관리, 리소스 조작 → 클라이언트를 위한 서비스 제공 서버-클라이언트의 근본적인 연산은 ‘트랜잭션’이다. 아래와 같은 총 4가지 스텝으로 트랜잭션이 이루어진다. ⚠️ 클라이언트와 서버는 프로세스이며, 머신이나 호스트는 아니다. 11.2 Networks 클라이언트와 서버는 별도의 호스트에서 돌아가며, 컴퓨터 네트워크의 H/W 및 S/W를 사용해서 통신한다. 호스트에게 네트워크는 또 다른 I/O 디바이스 이다. I/O bus의 확장 슬롯에 어댑터가 꽂혀있으며, 네트워크에 물리적인 인터페이스를 제공한다. 네트워크에서 수신한 데이터..
2022.12.20
no image
Team Session - File Descriptor(FD)
파일 디스크립터(FD, File Descriptor) 네트워크 소켓과 같은 파일이나 기타 입/출력 리소스에 액세스하는 데 사용되는 추상표현 ‘0이 아닌 정수’ (’Non-negative Integer’) : 음수가 아닌 0과 양수인 정수 값 음수는 오류 조건을 나타내기 위해 예약된다. 시스템으로부터 할당받은 파일이나 소켓을 대표하는 정수 POSIX API 정수 값 이름 0 표준 입력(stdin) 1 표준 출력(stdout) 2 표준 에러(stderr) 위의 3가지 디스크립터는 프로그램이 프로세스로 메모리에서 실행을 시작할 때 언제나 열린 채로 동작한다. ⚠️ 프로그램에서 파일 디스크립터를 참조할 때는 번호를 쓸 수도 있지만 가능하면 ‘UNISTD.h’ 에 POSIX 이름을 쓰는 편이 좋다. 1. [fil..
2022.12.11
no image
Malloc Lab 구현
☁️ Overview- 연관 포스팅(동적 메모리 할당 개요) Ch9. Dynamic Memory Allocation(9.9)추가적인 가상메모리를 런타임에 획득할 필요가 있을 때 동적 메모리 할당을 사용한다. 편리성, 호환성 Intro. 동적 메모리 할당 malloc, garbage collector 힙(heap)을 관리한다. 프로세스의 가상메모리olive-su.tistory.com  📂 File structuremalloc-lab ├── Makefile # 테스트를 실행하는 makefile ├── README.md ├── clock.c ├── clock.h ├── config.h ├── fcyc.c ├── fcyc.h ├── fsecs.c ├── fsec..
2022.12.08
no image
Team Session - Data Segment
Segment 메모리 보호를 수행하는 일반적인 방법 가운데 하나 💡 페이징 : 프로세스를 물리적인 단위로 분할하여 메모리에 적재 세그먼트 방식은 논리주소를 물리주소로 매핑하는 방식으로 구현한다. 세그먼트는 논리적인 단위로 메모리를 로드하기 때문에 메모리 보호가 쉽다. 각 세그먼트들의 크기는 균일하지 않다. 컴파일러에 의해 자동적으로 프로그램이 로드될 때 세그먼트가 나뉘게 된다. 간단히 말해서 메모리에 적재될 때 나뉘는 영역! Memory Structure 주소 영역 내용 메모리 할당 시기 0x0000 (Low Address) code(text) * 코드, 함수, 제어문 등 실행할 프로그램의 코드가 저장되는 영역 * Compile Time Memory 할당 * 크기 고정 data data * 초기값이 있는..
2022.12.08
no image
Ch9. Dynamic Memory Allocation(9.9)
추가적인 가상메모리를 런타임에 획득할 필요가 있을 때 동적 메모리 할당을 사용한다. 편리성, 호환성 Intro. 동적 메모리 할당 malloc, garbage collector 힙(heap)을 관리한다. 프로세스의 가상메모리 영역 초기화되지않은 데이터 영역 직후에 시작해서 위쪽(낮은 주소에서 높은 주소로) 커지는 메모리 영역 각각의 프로세스에 대해서 커널은 힙의 꼭대기를 가리키는 변수 brk(break) 를 사용한다. 힙을 다양한 크기의 블록들의 집합으로 관리한다. 각 블록은 할당 or 가용한 가상메모리의 연속적인 묶음이다. 할당된 블록 : 응용하기 위해 명시적으로 보존된다. Ex. C의 malloc으로 동적 메모리가 할당된 상태 할당된 블록은 메모리 할당기에 자신에 의해 ‘명시적(..
2022.12.06
no image
Ch1. A Tour of Computer Systems(1.7 ~ 1.9)
1-7. The Operating System Manages the Hardware 운영체제 : 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층 응용 프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해야한다. 운영체제의 목적 응용프로그램들이 하드웨어를 잘못 사용하는 것 방지 응용프로그램이 저수준의 하드웨어 장치를 효율적으로 조작할 수 있도록 함 운영체제의 추상화 운영체제의 목적을 추상화(abstraction)를 통해 달성한다. 파일 : 입출력 장치의 추상화 가상메모리 : 메인 메모리와 디스크 입출력 장치의 추상화 프로세스 : 프로세서, 메인 메모리, 입출력 장치 모두의 추상화 결과 💡 운영체제에서의 추상화(Abstraction)? 정의하고자 하는 대상의 디테일, 자세하고 사소한 특징들을 숨기고 주..
2022.12.06
no image
RB Tree 구현
연관 포스팅(RB Tree 이론) [Krafton Jungle | TIL_22.11.27] RB Tree 이론 균형 이진 탐색 트리(Balanced BST) 루트 노드로 부터 시작해서 찾고자하는 key 를 각 레벨에 따라 한번의 비교를 통해 key 값을 찾을 수 있다. $O(h)$ (h : 높이) 의 시간 복잡도를 가진다. insert, delete 연 olive-su.tistory.com ☁️ Overview 이진 트리의 특성을 기반으로 한다. RB Tree의 특성 모든 노드는 레드이거나 블랙이다. 루트는 블랙이다. 모든 리프는 블랙이다. 노드가 레드이면 그 노드의 자식은 모두 블랙이다. 각 노드로부터 그 노드의 자손인 리프로 가는 경로들은 모두 같은 수의 블랙 노드를 포함한다. ADT(Abstract..
2022.12.06
no image
RB Tree 이론
균형 이진 탐색 트리(Balanced BST) 루트 노드로 부터 시작해서 찾고자하는 key 를 각 레벨에 따라 한번의 비교를 통해 key 값을 찾을 수 있다. $O(h)$ (h : 높이) 의 시간 복잡도를 가진다. insert, delete 연산 모두 search의 영향을 받는다. 이진 트리의 높이 $lg(n+1)
2022.11.29