일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Flutter
- HTML
- 나만무
- corou
- 시스템콜
- 크래프톤 정글
- 자바스크립트
- 핀토스
- 모션비트
- userprog
- pintos
- Java
- 큐
- CSS
- 티스토리챌린지
- 소켓
- TiL
- 오블완
- 백준
- 스택
- 코드트리
- JavaScript
- defee
- 사이드프로젝트
- 알고리즘
- Vue.js
- 리액트
- 자바
- 4기
- 크래프톤정글
- Today
- Total
목록userprog (6)
미새문지
https://moonmisae-cdpt.tistory.com/176 pintOS - project2(Userprog) process.c process.c 더보기 // 명령줄 인자를 스택에 배치한다. void argument_stack (char **argv, int argc, struct intr_frame *if_){ int minus_addr; int address = if_->rsp; // 스택 포인터(rsp)의 현재 위치를 담는다. // moonmisae-cdpt.tistory.com 코드 분석에 어려움이 있어 아직 process.c는 진행중이다. syscall.c는 시스템 콜의 작동 코드를 작성하기 때문에 어느정도 이해가 되는데 pro..
process.c 더보기 // 명령줄 인자를 스택에 배치한다. void argument_stack (char **argv, int argc, struct intr_frame *if_){ int minus_addr; int address = if_->rsp; // 스택 포인터(rsp)의 현재 위치를 담는다. // 인자를 거꾸로 넣기 위해 마지막부터 루프 for (int i = argc-1; i >= 0;i-- ){ // 현재 인자의 길이 + '\0'(1개)를 minus_addr에 저장 minus_addr = strlen(argv[i]) + 1; //if onearg, value = 7 address -= minus_addr; // 인자 크기만큼 address를 감소시켜 저..
syscall.c 더보기 #define MSR_STAR 0xc0000081 /* 세그먼트 셀렉터 MSR, 64비트 모드로 전환할 때 사용되는 셀렉터를 저장 */ #define MSR_LSTAR 0xc0000082 /* 롱 모드 SYSCALL 목표 주소를 저장하는 MSR */ #define MSR_SYSCALL_MASK 0xc0000084 /* 실행 시 EFLAGS 레지스터에 적용될 마스크를 저장한다. */ MSR_STAR (0xc0000081) : 시스템 콜이나 리턴 시 CS와 SS 세그먼트 레지스터를 로드하는데 사용 MSR_LSTAR 0xc0000082 : 64비트에서 syscall 명령어가 실행될 때, CPU는 이 레지스터에 저장된 주소로 점프MSR_SYSCALL_MASK 0xc00..
Krafton Jungle Week 8~9 Team 6 WIL Argument Passing project2의 메인인 시스템 콜을 만들기에 앞서 Argument Passing을 구현해야 했다. Argument Passing이란, main 함수로 들어오는 명령어를 구분하여 인자로 전달하는 것이다. 우선 init.c 안에 있는 main() 함수의 read_command_line() 함수가 커맨드라인으로 들어오는 인자를 받아와 저장한다. (예: -q -f put args-single run 'args-single onearg') 이 후 일차적으로 파싱을 통해 -q와 -f등의 플래그들을 제거한 후 남은 부분을 run_actions로 전달해준다. run_actions -> run tasks 등을 거쳐 args-s..
inode 파일 시스템에서 inode(index node의 줄임말)는 파일이나 디렉터리의 메타데이터를 저장하는 데이터 구조이다. 이 메타데이터에는 파일의 크기, 소유권(사용자 ID와 그룹 ID), 접근 권한, 파일 내용의 위치 정보, 생성 시간, 마지막 수정 시간, 마지막 접근 시간 등이 포함되며, inode는 파일의 실제 내용을 저장하지 않고, 파일의 속성과 파일 데이터가 저장된 디스크 상의 위치만을 가리키는 역할을 한다. inode의 특징 고유한 식별자 파일 시스템 내에서 각 inode는 고유한 번호로 식별되고, 이 번호를 통해 파일 시스템은 특정 파일이나 디렉터리의 메타데이터에 접근할 수 있다. 메타데이터 저장 inode는 파일의 소유자, 그룹, 파일 모드(읽기, 쓰기, 실행 권한), 타임스탬프(생..
계속 쉬운것만 잔디를 심다보니 최근에는 올리지 않는게 더 나을 것 같아 pintos가 끝날 동안엔 잔디심기를 안 올릴 것 같다. %rdi 주로 첫 번째 인자 전달에 사용되며, 문자열이나 배열 같은 데이터의 목적지 주소를 지정하는데 사용된다. %rsi 두 번째 인자 전달에 사용되며, 문자열이나 배열같은 데이터의 원본 주소를 지정하는데 사용된다. %rdx 세 번째 인자 전달에 사용되며, 입출력 관련 시스템 호출에서 파일 디스크립터나 버퍼의 크기 등을 전달하는데에도 활용된다. %rcx 네 번째 인자 전달에 사용되며, 반복(loop) 카운트를 관리하는데에 사용될 수 있다. 또한 몇 명령어에서는 반복 횟수를 지정하는데 사용된다. %r8 다섯 번째 인자 전달에 사용되며, x86-64 아키텍쳐에서 새롭게 추가된 레지..