Wil
[ KJ ] Week08
ꕥ 8~9주차 PintOS User Programs 프로젝트를 진행했습니다~ꕥ Project2 : User Programs유저 모드(User Mode) : 일반적인 응용 프로그램이 실행되는 환경 - 제한된 메모리 공간과 시스템 자원에만 접근 가능 - 운영 체제의 핵심 부분에 직접 접근 불가 - 시스템의 안정성과 보안을 유지 - 시스템 자원이나 서비스가 필요할 경우, 시스템 호출(System Call)을 통해 커널 모드로 전환하여 요청을 처리커널 모드(Kernel Mode) : 운영 체제의 핵심 부분과 하드웨어를 직접 제어하는 코드가 실행되는 환경 - 시스템의 메모리 및 하드웨어를 직접 제어 가능 - 오류가 발생할 경우 시스템의 안정성에 큰 영향 - 메모리, 프로세스, 파일 시스템..
[ KJ ] Week07
ꕥ7주차 PintOS 프로젝트 중 Threads부터 시작했습니다~ꕥ Project1 : Threads멀티스레딩 : 하나의 프로세스 내에서 여러 스레드가 동시에 실행되는 기술- 스레드를 어떻게 활용해서 효율적으로 사용할 건지? 1. Alarm Clock문제점 : 현재 timer_sleep 함수는 목표 tick 시간 동안 while 루프에서 빠져나오지 못해, CPU가 다른 작업을 할 수 없게 된다.// 프로그램의 실행을 대략적으로 ticks 타이머 틱 동안 정지void timer_sleep(int64_t ticks_much){ int64_t ticks_now = timer_ticks(); ASSERT(intr_get_level() == INTR_ON); // 양보를 얼마나 했는가 while (time..
[ KJ ] Week06
ꕥ6주차입니다!오랜만에 네트워크를 보니 재밌네요 ㅎㅎ예상치 못하게 만나니까 반가운 그런 친구 느낌..?ꕥ OSI 7 layer 물리 계층 : 전기적 특성. 기능적 특성. 절차적 특성. 기계적 특성.데이터 링크 계층 : 물리 주소 할당. (MAC, DLCI ···)네트워크 계층 : 논리 주소 할당. (IP, IPX ···) 전송 계층 : 패킷 분리. 재전송. 에러 검출.세션 계층 : 앱 연결 시작·유지·해제표현 계층 : 데이터 형식 정의응용 계층 : 통신 S/WPDU : 각 계층의 데이터를 전송 단위 1. L1 : Bit 2. L2 : Frame - Packet이 운반 장치에 Encapsulation 돼서 배송 3. L3 : Packet - Segment를 Internet에서 유통 가능한..
[ KJ ] Week05
ꕥ5주차에는 Memory를 조금 더 이해하고, malloc의 개념 확인 및 구현을 진행했습니다~그리고 제어흐름에 대해 정리했어요!ꕥ 예외적인 제어 흐름(ECF) : 현재 발생하던 프로그램에서 제어 흐름에 갑작스러운 변화가 일어났을 경우예외를 통해서 프로세스가 사용자 모드에서 커널로 유일하게 진입하는 것- 응용 프로그램 실행 중에 예외적인 상태 변화가 일어나는 것Ex) 가상 메모리 페이지 오류, 산술 오버플로우 발생, 인스트럭션이 Divide by zero 시도, 응용 프로그램과 무관한 시스템 타이머 정지, I/O 요청 완료- 운영체제가 임출력, 프로세스, 가상메모리를 구현하기 위해 사용하는 기본 매커니즘- 응용 프로그램은 트랩(trap) 또는 시스템콜(system call)을 보내 운영체제로부터 서비스..
[ KJ ] Week04
ꕥ4주차에는 GCC 사용을 위한 Ubuntu 개발 환경 설정 후, RBTree 개념 확인 및 구현을 진행했습니다~CSAP 책과 개인적으로 공부한 내용을 정리해 봤어요!ꕥ Storage Class Specifiers 종류auto : 함수 내에서 지역 변수를 선언할 때 기본적으로 적용되는 저장 클래스 지정자static : 변수나 함수의 범위를 선언된 파일 내로 제한extern : 여러 개의 C 소스 파일을 함께 컴파일 했을 경우, 변수나 함수를 다른 파일에서도 접근 가능typedef : 새로운 데이터 형식을 정의할 때 사용되는 저장 클래스 지정자C의 기본적인 구조체enum : 지정된 정수 상수의 집합- 요소를 그룹화- 이해하기 쉬운 이름을 제공하여 코드의 가독성을 향상- 자체로는 데이터를 저장 불가- 상수..
[ KJ ] Week03
ꕥ3주차에도 이론에 많이 집중했습니다!알고리즘 또한 이론을 알아야 이해하는데 수월하더라구요.담주부터는 C언어합니다~ꕥ LCS (Longest Common Subsequence)최장 공통 부분 수열(LCS) : 두 개의 시퀀스(일련의 데이터)에서 가장 긴 부분 수열을 찾는 알고리즘부분 수열 : 원래 수열에서 일부 요소를 선택하여 만든 수열이며, 선택된 요소들이 원래 수열에서 가진 순서를 유지Ex) "ABCBDB"와 "BACDBC"의 최장 공통 부분 수열은 "ABC"이다. 이는 두 수열 모두에 속하며, 각 수열에서의 순서도 동일하게 유지되는 가장 긴 부분 수열이기 때문활용 분야 : 두 시퀀스 간의 유사성을 찾아내는 것이 중요한 DNA, RNA 시퀀스 비교, 파일 비교 및 병합, 소프트웨어 버전 관리 등LCS..
[ KJ ] Week02
ꕥ2주차에선 Graphs, BFS, DFS, 위상정렬을 활용한 알고리즘을 배웠습니다~팀원들과 함께 이론 정리를 하고 문제를 푸니까 좀 더 이해하기 좋았는데 구현은 어려워서 못 하고 있습니다 ㅎㅎ하지만 이론이라도 다 담아가겠다는 열정으로 해보겠습니다!ꕥ GraphsNode, Vertex : Graphs에서 Data를 저장하거나 Data 없이 연결 구조를 표현Edge : Node와 Node를 연결해서 서로의 관계를 형성Multiple Edge : 같은 2개의 Node 사이에 간선이 여러 개Weight : Node 간의 연결 관계나 관계의 강도를 표현Path : Node와 Edge의 연속적인 연결오일러 경로 : Graphs의 모든 Edge를 정확히 1번 이상 방문오일러 회로 : 오일러 경로의 시작점과 끝점이 ..
[ KJ ] Week01
ꕥ1주차는 조금 힘들었습니다. 처음 풀어보는 알고리즘 문제들... 에다가 양이 많기 때문입니다.게다가 다른 분들보다 확연히 못 푸는 게 느껴졌기 때문에 상대적으로 더 그랬던 거 같습니다.하지만 알고리즘 문제를 직접 풀어보니 Python 문법에 대해서도 많이 알게 돼서 좋았습니다.그리고 제가 혼자 하는 거보다 확연히 많은 공부를 하는 게 느껴지고 함께하니 즐겁습니다 :)ꕥ 배열 : 같은 타입의 변수들로 이루어진 유한 집합유한한 이유는 메모리상에 고정된 크기의 연속된 공간을 갖기 때문에 한 번 생성된 배열의 크기는 변경할 수 없음선언된 배열의 타입과 각 배열 안에 있는 요소 타입이 일치해야 함초기화 리스트의 개수가 배열의 총길이보다 적으면, 배열의 앞에서부터 차례대로 초기화# 생성a = [1, 2, 3]# ..