일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Vue.js
- 4기
- pintos
- 소켓
- 모션비트
- defee
- 크래프톤 정글
- 시스템콜
- 알고리즘
- JavaScript
- HTML
- 나만무
- 백준
- 크래프톤정글
- Java
- 스택
- 사이드프로젝트
- CSS
- Flutter
- 리액트
- 자바
- corou
- 핀토스
- 티스토리챌린지
- 큐
- TiL
- 코드트리
- 오블완
- 자바스크립트
- userprog
- Today
- Total
목록pintos (17)
미새문지
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를 감소시켜 저..
https://moonmisae-cdpt.tistory.com/173 스택(Stack), 큐(Queue) 스택(Stack) 스택은 프로그래밍에서 사용되는 기본적이면서도 중요한 자료구조 중 하나이며, 선형 자료구조이다. 데이터를 임시 저장하고 관리하는데 사용되며, 특히 데이터의 입력과 출력순서 moonmisae-cdpt.tistory.com https://moonmisae-cdpt.tistory.com/174 pintOS - project2(Userprog) syscall.c syscall.c 더보기 #define MSR_STAR 0xc0000081 /* 세그먼트 셀렉터 MSR, 64비트 모드로 전환할 때 사용되는 셀렉..
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..
Advanced Scheduler 멀티레벨 피드백 큐 스케줄러를 구현하여 시스템에서 실행 중인 작업의 평균 응답 시간을 줄여야 하며, 이 스케줄러는 4.4BSD 스케줄러와 유사하다. 우선순위 스케줄러와 마찬가지로, 고급 스케줄러도 우선순위를 기반으로 스레드를 선택한다. 하지만, 고급 스케줄러는 우선순위 기부를 수행하지 않기 때문에, 우선순위 기부를 제외하고 우선순위 스케줄러가 작동하고 있음을 확인한 후에 고급 스케줄러 작업을 시작하는 것이 좋다. Pintos 시작 시 스케줄링 알고리즘 정책을 선택할 수 있도록 코드를 작성해야 한다. 기본적으로 우선순위 스케줄러가 활성화되어 있어야 하지만, -mlfqs 커널 옵션을 통해 4.4BSD 스케줄러를 선택할 수 있어야 한다. 이 옵션은 main() 초기에 pars..
https://moonmisae-cdpt.tistory.com/160 Pintos-kaist Guide - PROJECT 1: THREADS - Introduction Project1: Threads 이번 과제에서는 최소한의 기능만 있는 스레드 시스템을 제공합니다. 여러분은 이 시스템의 기능을 확장하여 동기화 문제에 대한 이해도를 높여야 합니다. 주된 작업 디렉토리는 t moonmisae-cdpt.tistory.com https://moonmisae-cdpt.tistory.com/161 Pintos-kaist Guide - PROJ..
Alarm Clock devices/timer.c에 정의된 timer_sleep()을 다시 구현합니다. 작동하는 구현이 제공되지만 busy waits, 즉 현재 시간을 확인하고 충분한 시간이 경과할 때까지 thread_yield()를 호출하는 루프에서 회전합니다. busy waits를 피하려면 다시 구현하세요. void timer_sleep (int64_t ticks); 호출 스레드의 실행을 최소한 x 타이머 틱 만큼 시간이 지날 때까지 일시 중지합니다. 시스템이 유휴 상태가 아닌 경우에는 정확히 x 틱이 지난 후에 스레드를 깨울 필요는 없습니다. 대신 적절한 시간 동안 대기한 후에 준비 큐에 해당 스레드를 넣어주면 됩니다. timer_sleep()은 초당 한 번씩 커서를 깜박이는 등 실시간으로 동작하는..
Project1: Threads 이번 과제에서는 최소한의 기능만 있는 스레드 시스템을 제공합니다. 여러분은 이 시스템의 기능을 확장하여 동기화 문제에 대한 이해도를 높여야 합니다. 주된 작업 디렉토리는 threads이지만, devices 디렉토리에서도 부수적인 작업이 필요합니다. 컴파일은 threads 디렉토리에서 수행해야 하며, 프로젝트 설명을 읽기 전에 동기화 관련 자료를 먼저 살펴보는 것이 좋습니다. Background Understanding Threads 첫 번째 과제는 초기 스레드 시스템 코드를 읽고 이해하는 것입니다. Pintos에는 이미 스레드 생성과 종료, 스레드 간 전환을 위한 간단한 스케줄러, 그리고 세마포어, 잠금, 조건 변수, 최적화 장벽 등의 동기화 프리미티브가 구현되어 있습니다..