🔥 CS 개념 복습 자료구조 OS프로세스와 쓰레드 란?프로세스(Process)- 메모리에 로드되어 실행되고 있는 프로그램의 독립적인 개체- 기본적으로 최소 1개의 쓰레드를 가짐- 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받음- 스케줄링의 대상이 되는 작업(task) -> 실제로는 쓰레드 단위로 스케줄링쓰레드(Thread)- 프로세스 내에서 실행되는 흐름의 단위- 각각 Stack만 따로 할당, Code, Data, Heap영역은 공유동시성과 병렬성 이란?동시성(Concurrency)- 하나의 코어가 타임 슬라이스를 통해 동시에 실행되는 것처럼 보이게 하는 기술- 여러 작업(쓰레드)의 문맥을 빠르게 전환해 동시에 처리하듯 보이게 하는 것- I/O 작업이 많은 웹서버 ..
728x90
반응형
크래프톤
Spring SecurityArchitectureSpring Security란?인증(Authentication), 권한(Authorize) 부여 및 보호 기능을 제공하는 프레임워크(Java / Java EE)- 인증 : 해당 사용자가 본인이 맞는지를 확인하는 절차- 인가 : 인증된 사용자가 요청된 자원에 접근 가능한가를 결정하는 절차인증(Authentication) 방식1. Principal-Credential 방식 : username, password를 이용하는 방식2. 이중 인증(two factor 인증) : 사용자가 입력한 개인정보를 인증 후, 다른 인증 체계(ex: 물리적인 카드 등)를 이용해 두가지의 조합으로 인증하는 방식3. 하드웨어 인증 : 자동차 키와 같은 방식* Spring Securit..
Virtual Memory가상 메모리 관리가상 메모리 관리에서 가장 중요한 것은 얼마나 disk를 덜 방문하느냐disk에 데이터를 read, write를 하는 작업들은 느리기 때문임 페이징고정된 크기(page 단위)로 메모리 공간을 분할해 가상 메모리를 관리하는 기법필요성1. 메모리 공간이 고르게 분할되어 있기 떄문에 빈 공간이 작게 분할되어 유용하게 사용될 수 있어 외부 단편화 해결2. 필요한 메모리보다 조금 더 큰 크기의 메모리를 할당하여 내부 단편화가 발생하더라도 크게 문제되지 않음3. 물리 메모리보다 더 큰 주소 공간을 제공해 프로세스가 물리 메모리에 직접 접근하지 않고, 가상 주소를 통해 메모리 접근4. 필요한 페이지만 물리 메모리에 로드해 메모리 사용을 최적화5. 각 프로세스마다 독립적인 페이..
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..
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에 들어가기 위해 대기하는 스..
728x90
반응형