일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c#
- 4기
- 핀토스
- 다익스트라
- C
- 크래프톤정글
- 유니티
- BFS
- 크래프톤 정글
- TiL
- User Stack
- 네트워크
- 파이썬
- 알고리즘
- 오블완
- anonymous page
- 알고리즘수업-너비우선탐색2
- 티스토리챌린지
- Unity
- 연결리스트
- 전쟁-전투
- kraftonjungle
- 이벤트 함수 실행 순서
- 크래프톤 정글 4기
- pintos
- KRAFTON JUNGLE
- 백준
- 크래프톤정글4기
- project3
- 추상클래스와인터페이스
- Today
- Total
목록전체 글 (158)
말감로그
📆2024.03.19 1. 퀴즈 2. PintOS - SystemCall close, write, read() 함수 구현 3. fork().. 오늘 퀴즈 보기 전까지 키워드 공부만 했는데 정작 퀴즈에는 키워드 부분이 나오지 않았다.. 하나 나왔나... 그리고 굿노트에다가 퀴즈 푸는데 잘못해서 굿노트를 삭제해버려서 그동안 정리했던 데이터들이 다 삭제되었다.. 그동안 열심히 필기하고 강의 들으면서 정리한 ppt.. 코어타임.. 등등 다 사라졌다는 거에 멘탈이 깨져서 퀴즈도 잘 보지 못했다. 새로운 마음으로 다시 시작하자..라는 마음으로 다시 부지런히 채워나가야지🥲🥲 다들 아이클라우드 업데이트하세요.... 그리고 어제 open 하나밖에 못했다는 거에 충격 먹어서 오늘 부지런히 해야겠다는 생각을 했고 그래서 c..
User mode vs Kernel mode 유저모드 : 유저 모드에서는 응용 프로그램이 실행된다. 응용 프로그램이 자신의 메모리 공간 내에서만 실행되며, 시스템 자원에 직접적으로 접근할 수 없다. 시스템 콜을 통해 커널 모드의 서비스를 요청하여 시스템 자원에 접근한다. 커널 모드 : 커널 모드는 운영 체제의 핵심 부분인 커널이 실행되는 모드이다. 커널 모드에서는 프로세스가 전체 시스템 자원에 대한 접근 및 제어 권한을 가지며, 특권 명령어를 실행할 수 있다. 유저모드와 커널 모드 간의 전환이 필요한데, 이러한 모드 간의 전환은 운영체제에 의해 관리된다. 이러한 모드 간의 요청은 시스템의 안전성과 보안을 유지하는데 중요한 역할이다. Register vs Memory 레지스터와 메모리는 컴퓨터 시스템에서 ..
📆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) 사용자 모드에서 실행되는 프로세스나 스레드에 의해 사용되며, 함수 호출 시에 해당 함수의 매개변수, 지역 변수, 복귀 주소 등이 저장된다. 유저 스택은 프로세스의 사용자 모드 메모리에 위치하며, 해당 프로세스가 직접적으로 접근할 수 있다. 유저 스택은 각 프로세스마다 별도로 할당되며, 스택 프레임을 통해 함수 호출과 복귀를 관리한다. 함수 호출 관리 : 함수가 호출될 때마다 해당 함수에 필요한 정보를 스택에 저장하고, 함수가 종료되면 스택에..