System Call시스템콜 함수더보기추가적인 수정이 필요함..check_addr()받아온 주소의 유효성을 검사가상 메모리와 주소가 맵핑된 것이 없는 경우주소가 유저 스택의 최상단 주소보다 같거나 큰 경우(유저 영역이 아닌 경우)주소가 NULL인 경우void check_addr(void *addr){ // 가상메모리와 매핑된게 없거나 유저스택보다 같거나 크고 NULL이면 종료(exit) if (pml4_get_page(thread_current()->pml4, addr) == NULL || !is_user_vaddr(addr) || addr == NULL) { exit(-1); }}halt()power_off를 호출해서 PintOS를 종료시킴void halt(void){ power_off();}exit..
728x90
반응형
정글
Argument Passing 프로세스 함수 load()명령어 라인(Command Line)으로 입력받은 파일명과 인자들을 USER STACK에 PUSH하고 레지스터에 argv, argc를 지정 uintptr_t phys_base = if_->rsp;// 기존에 만들었던 Stack을 사용(오른쪽 인자부터 유저스택에 넣기 위해서 사용)Stack stack;int lenArr[100] = {0};int idx = 0;int args_count = 1;int stack_size;char *addr_list[20];// 파일명 넣기push(&stack, file_name);// 인자 넣기for (token = strtok_r(NULL, " ", &saveptr); token; token = strtok_r(NU..
Pintos Part 2(User Program) Backgroundthread_create() 함수- 쓰레드 구조체를 만들고 초기화- 커널 스택을 할당받음- 함수를 등록해 실행(명령어 포인터 및 인자를 넣음)- ready_list에 추가로드(load) 함수- 디스크에서 바이너리 파일을 로드하고 메모리(스택, 데이터, BSS, TEXT 등) 초기화를 수행- 성공적으로 로드가 되면 실행하고 아니면 exit() 호출요구사항1. Argument passing(인자 전달)2. 레지스터에 agvc, argv 전달프로세스 실행 함수(process_exec)ELF 파일 로드- 2단계 페이지 테이블 생성- 파일을 열어서 ELF 헤더를 읽음- 파일을 파싱해서 데이터를 데이터 세그먼트로 로드- 유저 스택을 만들고 초기화함..
PintOS 궁금증세마포어의 wait_list와조건(Condition)의 wait_list의 차이- Semaphore는 critical section에 들어가기 위해 대기하는 스레드들이 있는 리스트입니다. Semaphore를 사용하는 스레드는 먼저 세마포어를 획득하기 위해 대기 리스트에 등록되고, 세마포어를 획득한 후에는 다른 스레드가 이용할 수 있도록 세마포어를 해제합니다.-조건(Condition)은 특정 조건이 충족되지 않아 대기하는 스레드들이 있는 리스트입니다. 조건(Condition)를 사용하는 스레드는 조건이 충족되지 않으면 대기 리스트에 등록되고, 조건이 충족되면 대기를 해제하여 작업을 수행하게 됩니다.**세마포어의 wait_list는 critical section에 들어가기 위해 대기하는 스..
1158. 요세푸스 문제import sysinput = sys.stdin.readlinelength, num = map(int, input().split())arr = [i for i in range(1, length+1)]temp = num - 1result = []while len(arr) > 0: temp %= len(arr) # 배열의 길이에서 숫자-1을 나눈 나머지를 담음 result.append(arr.pop(temp)) # 배열의 temp번째를 뽑아내서 result에 담음 temp += num - 1 # temp에 num-1을 더함print("")1874. 스택 수열import sysinput = sys.stdin.readlinen = int(input())num_list =..
프로세스, 쓰레드프로세스(Process)쓰레드(Thread)운영체제(OS)로부터 자원을 할당받은 작업의 단위프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 프로세스(Process)프로그램과 프로세스의 차이프로그램(실행 X)프로세스(실행 O)- 어떤 작업을 하기 위해 실행할 수 있는 파일- 파일이 저장 장치에는 있지만 메모리에 올라가지 않은 정적인(Static) 상태- 실행되어 작업중인 컴퓨터 프로그램- 메모리에 적재되어 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태프로세스의 자원 구조- 코드 영역(Code / Text) : 프로그램 함수들의 코드가 CPU가 해석 가능한 기계에 형태로 저장- 데이터 영역(Data) : 전역 변수나 각종 데이터들이 저장(.data, .rodata, .bss)..
더보기1. HTTP GET 요청과 POST 요청의 가장 큰 차이점은 무엇이며, 이것이 요청 헤더나 데이터 전송에 어떤 영향을 미칩니까?- GET 요청은 데이터를 URL의 일부(query string)로 전송하지만 POST 요청은 데이터를 요청 본문(body)에 포함합니다. 1) GET 요청의 URL 길이에는 브라우저나 서버에 따라 제한이 있습니다. 이로 인해 전송할 수 있는 데이터의 양이 제한됩니다. 2) POST 요청은'Content-Length'와 'Content-Type' 같은 추가적인 헤더 정보를 필요로 합니다. 2. HTTP 응답 코드 404의 의미는 무엇입니까? 그리고 서버가 요청을 처리할 수 없을 때 반환하는 HTTP 상태 코드는 무엇입니까?- HTTP 응답코드 404는 "Not ..
728x90
반응형