본문 바로가기

Computer Science

(63)
네트워크 | TCP/IP Updated 모델 (5계층 모델) 이전에 TCP/IP 모델 이론에 대해서 공부한 적이 있다.네트워크 모델 | (1) OSI 모델, TCP/IP 모델 개요네트워크 모델 | (5) 데이터 단위와 흐름 이해하기<a style="color: #0070d1;" href="https://hyuga.tistory..
AWS 클라우드 서비스 교육 필기 AWS General Immersion Day 포지션 소개 Solution Architects: 엔터프라이즈에서 서비스 런칭할 때 AWS 상 아키텍쳐 조언 Technical Account Manager: 기업에서 발생하는 각종 이슈들 조언 AWS 글로벌 인프라 대체로 가까운 리전, 가용영역(AZ)에 서비스 연결 하나의 가용영역(AZ)이 뻑나도 문제 없게 설계. 데이터센터 뿐 아니라 글로벌 네트워크도 갖고 있음. 가용 영역(AZ)은 AWS 리전에서 중복 전력, 네트워킹 및 연결을 지원하는 하나 이상의 개별 데이터 센터입니다. AZ를 사용하면 단일 데이터 센터보다 더 높은 가용성, 내결함성 및 확장성을 갖춘 프로덕션 애플리케이션과 데이터베이스를 운영할 수 있습니다. 서브넷에서 실행되는 애플리케이션을 여러 A..
PintOS | Project3. Virtual Memory | 트러블 모음 2 Stack growth 트러블 모음 pt-write-code2 테스트 케이스 pt-write-code2 테스트는 잘못된 영역(코드 세그먼트)에 read() 시도를 하는 테스트이다. 메모리 관점에서 보면 read() 시스템콜은 파일의 데이터를 읽어서 메모리의 버퍼에 쓰는 작업을 포함한다. 그러나 현재는 코드 세그먼트는 not writable 해야 하는데, read()가 되고 있는 상황, 즉 not writable한 페이지에 write가 되는 상황이다. 문제상황을 실제 파일에서 확인해보았다. pt-write-code2 테스트 코드는 다음과 같으며, void test_main (void) { int handle; CHECK ((handle = open ("sample.txt")) > 1, "open \\"sa..
PintOS | Project3. Virtual Memory | 트러블 모음 1 Anonymous Page 1. Lazy Loading - thread_current()에서 터지는 문제 spt_insert_page 에서 문제를 발견할 수 있었다. hash_insert()는 첫번째 인자로 hash 구조체를 받아야 하는데, spt를 줬다. &spt 를 &spt->spt_pages 로 바꿔주니 문제 해결 2. Page fault 핸들링 때, spt에서 페이지를 찾지 못하는 문제 exit(-33)을 어디에 넣어놨냐면 .. 뭐가 문제였을까?? 애초에 page를 spt에 제대로 넣어주지 못했거나, 제대로 넣어줬으나 탐색 과정상의 문제로 찾지 못하는 상황인 듯 하다. 여기서 출발하여 원인을 탐색하다보니 다음과 같은 문제점을 발견할 수 있었다. vm_stack_growth(), setup_stac..
운영체제 | 가상메모리 | 페이징과 주소번역 더 알아보기 큰 그림 요약 가상 메모리는 다음 페이지들의 집합으로 표현될 수 있다: 메인메모리에 로드된 cached page (익명 페이지와 file-backed page들) cached page는 메인메모리에 복제(load)되어 캐싱된 페이지를 뜻한다. cached 메모리의 경우 해당 프로세스(스레드) 페이지 테이블 중에서, 해당 페이지에 해당하는 PTE의 valid bit (다른 말로 present bit)가 1로 설정된다. 해당 프로세스(스레드) 페이지 테이블의 위치는 PTBR 에 저장된다. 메인메모리에 로드되지 않은 데이터 cached page 였다가 스왑 아웃된 uncached page: cached page 였다가 스왑 아웃된 uncached 페이지 중 익명 페이지들은 스왑 영역 안에 존재하게 된다. fi..
PintOS | Project2. User Program | 시스템 콜 (프로세스 관련, 파일 관련) 실제 리눅스 환경에서 제공되는 시스템 콜의 종류는 다음과 같이 다양하다. 범주 설명 시스템 콜 프로세스 관리 프로세스 생성, 종료, 실행, 통신 등을 다룸 fork, exit, execve, wait, kill 파일 시스템 조작 파일 및 디렉토리 생성, 삭제, 읽기, 쓰기 등을 다룸 open, close, read, write, chmod 장치 관리 하드웨어 장치와의 상호작용 관련 기능을 다룸 ioctl, mmap 네트워크 관리 네트워크 통신 및 소켓 관리 관련 기능을 다룸 socket, bind, connect 메모리 관리 메모리 할당, 해제, 매핑 등을 다룸 brk, mmap, munmap 사용자 및 그룹 관리 사용자 및 그룹 식별, 관리 관련 기능을 다룸 getuid, setgid, getgid 시..
PintOS | Project1. Threads | Advanced Scheduling (4.4 BSD) 핀토스 프로젝트에서는 4.4 BSD 스케줄러를 채택하고 있다. BSD는 Berkeley Software Distribution의 약자이고, UNIX의 한 버전인 4.4 BSD에서 사용되는 프로세스 스케줄러라고 한다. 앞서 공부했던 MLFQ 기반에서 변형된 버전이다. 이번 기록에서는 4.4 BSD를 구현하면서 이해한 바와 고민했던 내용들을 적어보는 시간을 가져보고자 한다. BSD의 스케줄링 철학 BSD 스케줄러의 핵심 철학은 다음과 같다. If the thread is nicer, lower the priority. If the thread have been using lots of CPU recently, lower the priority. For all threads, priority is recalc..
운영체제 | CPU 스케줄링 알고리즘 | MLFQ 멀티 레벨 피드백 큐(MLFQ, Multi-level Feedback Queue) 우선순위 스케줄러의 발전된 형태 중 하나이며, Windows에서도 일부 채택되는 방식이다. (Linux는 현재 RB 트리를 활용하는 CFS(Completelty Fair Scheduler)를 사용한다고 한다.) MLFQ의 목표 두 가지 1. 반환 시간 최적화: 짧은 작업을 먼저 실행시킨다 2. 응답 시간 최적화: 대화형 사용자에게 응답이 빠른 시스템이라는 느낌 주기 근데 시스템은 작업의 실행 시간을 미리 알 수 없다. 따라서 핵심적인 질문은 다음과 같다: 작업의 실행 시간에 대한 선행 정보 없이 어떻게 위 목표를 달성할 수 있는가? MLFQ의 규칙 MLFQ는 여러 개의 큐로 구성되며, 각각 다른 우선순위(Priority l..