728x90
반응형

크래프톤정글

Spring SecurityArchitectureSpring Security란?인증(Authentication), 권한(Authorize) 부여 및 보호 기능을 제공하는 프레임워크(Java / Java EE)- 인증 : 해당 사용자가 본인이 맞는지를 확인하는 절차- 인가 : 인증된 사용자가 요청된 자원에 접근 가능한가를 결정하는 절차인증(Authentication) 방식1. Principal-Credential 방식 : username, password를 이용하는 방식2. 이중 인증(two factor 인증) : 사용자가 입력한 개인정보를 인증 후, 다른 인증 체계(ex: 물리적인 카드 등)를 이용해 두가지의 조합으로 인증하는 방식3. 하드웨어 인증 : 자동차 키와 같은 방식* Spring Securit..
fork 더보기모든 케이스를 통과한게 아니라 중간에 틀린 내용이 있을 것으로 예상..fork()자식 프로세스(쓰레드)를 생성하고 부모 프로세스(쓰레드)의 내용을 자식에게 복사함tid_t fork(const char *file_name, struct intr_frame *f){ return process_fork(file_name, f);}process_fork()커널의 인터럽트 프레임을 부모 구조체 내부의 parent_tf에 복사함(자식에게 복사해주기 위함)tid_t process_fork(const char *name, struct intr_frame *if_ UNUSED){ struct thread *parent = thread_current(); // 부모 쓰레드 memcpy(&parent->par..
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..
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 =..
728x90
반응형