일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- project3
- 크래프톤 정글 4기
- 유니티
- 연결리스트
- User Stack
- 백준
- 크래프톤정글
- anonymous page
- 추상클래스와인터페이스
- c#
- 핀토스
- 티스토리챌린지
- TiL
- 4기
- KRAFTON JUNGLE
- Unity
- kraftonjungle
- 알고리즘수업-너비우선탐색2
- 전쟁-전투
- 오블완
- 다익스트라
- 네트워크
- pintos
- 이벤트 함수 실행 순서
- 알고리즘
- 크래프톤정글4기
- 크래프톤 정글
- 파이썬
- BFS
- C
- Today
- Total
목록전체 글 (174)
말감로그
📆2024.3.18 1. system call - open(), process_add_file() 구현 System Call 1. open() file 을 열기 위해서는 시스템 콜 open() 함수를 구현해야 한다. open을 구현하기 위해서는 1. file이 유효한 주소값인지를 검증해야 한다. 2. filesys_open를 호출해서 파일을 open한다. 3. process_add_file 함수를 호출해서 파일 디스크립터 테이블에 파일을 추가하고 fd를 반환한다. 4. 파일디스크립터 테이블에 추가할 수 없는 경우(fd == -1)인 경우엔 파일을 닫고 -1을 리턴한다. 5. 오픈한 파일의 fd를 반환한다. int open (const char *file) { check_address(file); stru..
📆2024.3.16 1. system call 구현 - halt, exit, write, create System Calls 구현 시스템 콜 핸들러인 syscall_handler()가 제어권을 얻으면, 시스템 콜 번호가 %rax에 있으며, 인자값들은 순서대로 전달된다. (%rdi, %rsi, %rdx, %r10, %r8 and %r9) 호출자의 레지스터는 struct intr_frame으로 전달되어 접근할 수 있다.(struct infr_frame은 커널 스택에 있다.) 유저 프로그램의 프로토타입은 include/lib/user/syscall.h 담겨 있다. (이곳에 헤더 파일과 다른 include/lib/user에 있는 파일들은 유저 프로그램에서만 사용된다.) -> user/syscall.c 에서 sy..

📆2024.3.15 1. argument passing 구현 2. 백준 argument passing 인자 전달 user프로그램이 실행되기 전에 프로그램에 대한 인자를 설정해야 한다. 1. process_create_initd() 👉🏻 command line을 parsing 해서 file_name을 찾는다. - 인자로 들어오는 file_name이 실행 시 입력된 command line이다. - 이 command line을 parsing해서 파일 이름을 찾는다. - parsing해서 얻어낸 파일 이름이 thread_create 함수의 첫 번째 인자로 들어가야 한다. tid_t process_create_initd (const char *file_name) { char *fn_copy; tid_t tid; ..
📆2024.3.13 1.백준 2. pintos - project2 kernel panic error 해결 백준 1927 최소 힙 처음에 뭐야 너무 쉽자나? 라고 생각하며 풀었지만 결국 시간 초과.. 바보같이 최소 힙인데 heapq를 안쓰고 풀려고 했었담. heapq 써서 완료! import heapq import sys input = sys.stdin.readline N = int(input()) heap = [] for i in range(N): x = int(input()) if x > 0: heapq.heappush(heap, x) if x == 0: if len(heap) == 0: print(0) else: print(heapq.heappop(heap)) PintOS - Project 2 USE..
📆2024.3.12 1. PintOS Project 2 - GitBook 2. 백준 문제 풀기 이번에 우리가 구현해야 할 문제를 알기 위해서 GitBook을 읽었다. 우선 Argument Passing 인자 전달 부분을 구현해야한다. 코치님께서 Project2. argument passing은 포인터를 정확하게 이해하고 있다면 충분히 할 수 있는 과제라고 했다. hex_dump를 이용해 내가 넘긴 argument들이 메모리의 정확한 위치에 저장됨을 확인하면 되는 과제다. gitbook을 보면 Implement the argument passing. Currently, process_exec() does not support passing arguments to new processes. Implement..
📆2024.3.11 1. pintOS Project1 발표 2. 키워드 공부 오늘 PintOS Project 1 : Alarm Clock과 Prioirty Scheduling 발표했다. 팀원들과 파트를 나눠서 발표를 했는데 그 중 나는 우선순위 스케줄링에서 선점, sema, condition variable 파트 맡았다. 한 팀당 발표 시간은 7분 정도 주어지기 때문에 많은 시간이 아니므로 구현하면서 어려웠던 부분 어떻게 풀어나갔는지를 중점적으로 발표했다. 나는 특히 condition variable 에서 비교함수 부분을 주로 얘기했다. 발표가 끝나고 8주차 발제를 했는데 지금까지 project 1은 커널의 일부로서 시스템에 중요한 부분에 접근할 수 있는 특권을 가지고 실행했었다면 이번 project2는..

운영 체제의 관점에서 볼 때, User Stack (사용자 스택)은 매우 중요한 개념이다. 사용자 스택은 프로그램 실행 중 발생하는 다양한 작업들을 관리하기 위한 메모리 구조로, 프로세스의 실행 상태를 효과적으로 관리하는 데 필수적이다. 유저스택(User Stack) 사용자 모드에서 실행되는 프로세스나 스레드에 의해 사용되며, 함수 호출 시에 해당 함수의 매개변수, 지역 변수, 복귀 주소 등이 저장된다. 유저 스택은 프로세스의 사용자 모드 메모리에 위치하며, 해당 프로세스가 직접적으로 접근할 수 있다. 유저 스택은 각 프로세스마다 별도로 할당되며, 스택 프레임을 통해 함수 호출과 복귀를 관리한다. 함수 호출 관리 : 함수가 호출될 때마다 해당 함수에 필요한 정보를 스택에 저장하고, 함수가 종료되면 스택에..
운영 체제(OS)에서 사용되는 프로세서 유형은 CPU 레지스터에서 액세스할 수 있는 메모리 양을 알려준다. 32비트 운영 체제란? 32비트의 데이터를 전송할 수 있는 용량을 보유하는 CPU 아키텍처 유형이다. 컴퓨터 시스템에서 32비트는 클록 주기당 32비트의 데이터를 전송할 수 있는 CPU 아키텍쳐이고, 해당 시스템의 CPU가 일부 작업을 수행할 때마다 처리할 수 있는 데이터 또는 정보의 양을 의미한다. 1990년대와 2000년대 초반의 시스템은 주로 32비트 아키텍처 시스템을 기반으로 구축되었다. 64비트 운영 체제란? 최대 64비트의 데이터를 전송할 수 있는 용량을 보유하는 CPU 아키텍쳐 유형이다. 컴퓨터 시스템에서 64비트는 클록 주기당 64비트의 데이터를 전송할 수 있는 CPU 아키텍쳐이고, ..

PintOS가 시작되었다.. 3주 동안 같은 조가 Project1과 2를 구현하고, 2주 동안 다른 조로 바뀌면서 Project3을 구현하게 된다. 1.5주 동안 팀원들과 페어프로그래밍하며 완성시킨 Project1 Alarm Clock고 Prioirty Scheduling에 대해 해결방법, 시행착오에 대해 작성하였다. 중요한 함수, 수정된 코드 중심이므로 다른 코드와 함수에 대해서는 코드를 보며 숙지하길 바란다. ⏰ Alarm Clock Alarm Clock에서 해결해야 할 주 된 문제 - First : busy waits 피해라! - Second : 우선순위가 높은 스레드를 먼저 깨워서 먼저 실행되도록 해라! busy waits 방식을 피하고 우선순위가 높은 스레드를 먼저 깨워서 먼저 실행되도록해서 테..