👨‍💻 Seungineer's GitHub Contribution

SEUNGWOO + ENGINEER 61

[PintOS] User Program - System Call2 (Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다.fork() 함수 구현하는 데서 시간을 너무 많이 썼다. 위 짤처럼 버그를 고치면, 다른 데서 버그가 났고, 그 버그를 고치면 이전 테스트 케이스가 통과가 안 되는 일이 엄청 많았기 때문이다. 무한 버그의 굴레 끝에 'ALL PASSED' 문구를 봤을 때의 감동을 아직도 잊지 못 하겠다(짜릿해).프로세스 계층 구조 개요Process의 정보에 부모와 자식 field를 추가하여 이를 관리하는 함수를 제작한다. 이때, project1에서 사용되었던 semaphore 개념이 사용된다. Process 관련 system call에는 ..

[PintOS] User Program - System Call (Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다.들어가기 전에레지스터 역할 정리%rax : system call number 저장 ▶️ 운영체제가 어떤 시스템 호출을 수행할지 결정하는 데 사용됨%rdi, %rsi, %r10, % r8, %r9 : system call arguments 전달에 사용(호출에 따라 일부만 사용될 수 있으며, 순서대로 할당됨)%rcx : syscall 명령어 사용 시 %rcx 레지스터에 복귀 주소가 저장됨(일반적인 함수 호출 시에는 스택에 저장!) ⬅️ 운영체제에서 자동 처리%r11 : syscall 명령어 사용 시 현재 process stat..

[PintOS] User Program - Arguments parsing (Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다. Arguments ParsingCommand Line에 대해 공백(' ') 단위로 분리해야 한다. 현재는 Arguments가 분할되지 않아 하나의 배열로 입력되고 있다. 이렇게 입력되면, filename을 찾을 수도 없거니와 여러 명령 옵션을 사용할 수가 없다. 핀토스에서는 '문자열 분리' 함수(strtok_r())를 지원하므로 이를 사용할 수 있다.strtok_r()tid_tprocess_create_initd (const char *file_name) { char *fn_copy; char *temp_ptr; char..

[PintOS] User Program - 배경지식(Project 2, TIL)

KAIST PintOS 강의 및 Instruction, 한양대 PintOS Slides를 참고하며 학습한 내용을 정리하였습니다.학습 도중 작성한 내용이라 틀린 내용이 있을 수 있습니다.Project 2 : User Programs최종 구현되어야 할 것현재 핀토스는 새로운 프로세스(User process)를 생성한 후 scheduling() 될 때 Init process가 종료(exit)되기에 User process 실행이 불가능하다. 최종 구현 후에는 Init process가 mother of all process로, '자식 process의 완료 대기 상태가 되고, User process 종료 후에 exit 및 프로세스 종료되어야 한다.thread_create()커널 스택에 4KB 공간의 Page를 하나..

[PintOS] Thread - Priority Scheduling (Project 1, WIL)

들어가기 전에운영체제의 동작 과정(Dual-Mode Execution)User Mode : 일반적 응용프로그램 구동 환경Kernel Mode : 커널 구동 환경(User Mode와 달리 system call(H/W 관련) 호출 가능) ◀️ PintOS 환경첫 운영체제 구동 시 초기화 작업 및 부팅 작업으로 인해 커널 모드로 시작되고, 곧바로 사용자 모드로 전환된다. 이는 Kernel Mode에서의 작업이 컴퓨터 전반에 영향을 줄 수 있는 작업이기에 일반 사용자의 접근을 제한하기 위함이다.User Mode에서 'system call'을 호출User Mode에서 작업이 불가능한 것을 운영체제에 위임Interrupt?Interrupt(인터럽트)란 컴퓨터 시스템에서 발생하는 '중단 신호'로 CPU가 특정 프로그..

[PintOS] Thread - Alarm Clock (Project 1)

KAIST Jungle 7주차, OS 프로젝트를 진행하며 학습한 내용을 정리한 글입니다. 들어가기 전에프로세스는 뭐고 스레드는 뭔가요? [유튜브 영상 강의]CPU의 동시성은 여러 작업을 일부분씩 context switching 하면서 진행됨A, B, C 작업 동시 처리 시 순서대로 A(5% 수행)▶️ B(5% 수행) ▶️ C(5% 수행) ▶️ A(10% 수행)▶️ B(10% 수행) ▶️ C(10% 수행) ... (반복) ▶️ A(100% 수행)▶️ B(100% 수행) ▶️C(100% 수행)병렬성은 프로세스 하나에 코어 여러 개가 달려서 각각이 작업을 동시에 진행하는 것(작업분담)첫 번째 코어에서 A작업, 두 번째 코어에서 B작업, 세 번째 코어에서 C작업을 같은 시점에 작업함한 프로세스(ex. 크롬) 내..

[CS:APP] 11. 네트워크 프로그래밍(을 들어가기 전에)

6주차는 CS:APP의 11장을 참고하여 '웹서버 만들기'를 진행한다. 11장을 읽기 전에 기본적인 선수지식에 대해서 정리해 보았다. ☑️ TCP/IP, HTTP는 무엇일까? 계층 전송 계층 네트워크 계층 응용 계층 주 기능 데이터 전송의 신뢰성 보장 데이터 패킷의 주소 지정 및 경로 설정 웹 서버와 클라이언트 간의 데이터 교환 데이터 단위 세그먼트 패킷 메시지 프로토콜 연결 지향적 비연결 지향적 상태가 없음 TCP(Transmission Control Protocol) 데이터의 정확한 전송을 보장한다. 데이터를 세그먼트로 나누고, 순서대로 전송하며, 손실된 데이터는 재전송함 데이터 전송 전에 통신하는 두 지점 간에 연결을 설정함(신뢰성 있는 데이터 전송 보장) IP(Internet Protocol) 각..

[CS:APP] 9.9 동적 메모리 할당(#연습문제 9.6 #연습문제9.7 #malloc)

9.9 동적 메모리 할당 "가상 메모리의 영역을 저수준의 mmap과 munmap 함수를 사용해서 생성하고 삭제할 수 있지만, C 프로그래머들은 대개 추가적인 가상 메모리를 런타임에 획득할 필요가 있을 때, '동적 메모리 할당기'를 사용하는 것을 좀 더 편리하고 호환성이 좋다고 생각한다. 명시적 할당기 : Application이 명시적으로 할당된 블록을 반환해 줄 것을 요구 C 표준 라이브러리는 malloc 패키지라고 하는 명시적 할당기를 제공함(malloc, free, C++의 new, delete) 묵시적 할당기 : 언제 할당된 블록이 더 이상 프로그램에 의해 사용되지 않고 블록을 반환하는지를 할당기가 검출할 수 있을 것을 요구 묵시적 할당기는 garbage collector라고 알려져 있으며, 자동으..

[SW 정글 26일차] Red-Black tree (#삽입)

RB tree는 자가 균형 이진 탐색 트리(Self-Balanced Binary Search Tree)의 한 종류로, 검색, 삽입, 삭제 등의 동작을 최악의 경우에도 O(log n) 내에 처리할 수 있도록 설계되었다. RB tree는 각 노드가 빨강 또는 검정의 색깔을 가지며, root부터 leaf(NIL)까지의 모든 경로에 대해 블랙 노드의 수가 동일하게 유지되도록 규칙을 적용하여 균형을 맞춘다. RB tree를 사용하는 이유는 데이터의 삽입, 삭제, 검색 작업 시 '항상 균형 상태를 유지'함으로써, 트리의 높이가 최소한으로 유지되어 효율적인 시간 복잡도를 보장한다. Binary Search Tree란, 정렬된(ordered, or sorted) binary tree이며 노드는 2개의 서브트리를 가질 ..

[SW 정글 25일차] '컴퓨팅 사고로의 전환' 끝! ➡️ '탐험 준비' 시작!

Week 1 ~ 3, '컴퓨팅 사고로의 전환'이 마무리 되었다. 발제명과 같이 기존 사고 방식을 컴퓨팅과 동일한 사고 방식으로 전환하기 위해 알고리즘 문제를 활용하였다. 알고리즘 문제를 컴퓨터가 해결할 수 있도록 파이썬으로 코드를 짠다. 이렇게 코드를 짜며 내가 사고하는 방식을 컴퓨터가 처리할 수 있는 방식대로 동기화하는 주차였다. 3주간 알고리즘 문제들을 컴퓨터에게 해결시켜(?) 본 결과 어느정도 사고 방식이 동기화가 되는 것 같다(아주 조금). 다만, 아직도 time, space complexity 를 줄일 수 있는 방식을 떠올리지 못 하고 있다. 조금 더 공부하고자 하는 부분이다. 또한 백준에 아직 접근해보지 못 한 문제들이 많이 남아 있다. 이러한 문제들을 경험해보면서 더 능숙하게 컴퓨터에게 일을..