전체 446

[쉽게 배우는 운영체제](요약)[Part-3][Ch-9] 가상 메모리 관리

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 요구 페이징(Demand Paging) 사용자가 요청할 때 해당 페이지를 메모리로 가져오는 것 페이지 테이블 엔트리(PTE)의 플래그 비트 접근 비트 - 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트 변경 비트 - 페이지가 메모리로 올라온 후 데이터의 변경이 있었는지 알려주는 비트 유효 비트 - 페이지가 실제 메모리에 있는지 나타내는 비트 읽기 / 쓰기 / 실행 비트 - 페이지에 대한 읽기 / 쓰기 / 실행 권한을 나타내는 비트 페이지 부재(Page Fault) 프로세스가 페이지를 요청했을 때, 해당 페이지가 메모리에 없는 상황 유효비트가 1일 때, 해당 PTE의 주소 필드에 스왑 영역의 페이지..

책읽기 2021.07.29

[쉽게 배우는 운영체제](요약)[Part-3][Ch-8] 가상 메모리의 기초

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 가상 메모리의 개념 실제 물리 메모리 크기보다 큰 메모리 공간을 프로세스에게 제공하는 기술 프로세스는 운영체제 위치와 메모리 크기에 상관없이 메모리를 마음대로 사용 가상 메모리의 크기 물리 메모리 크기 + 스왑 영역 매핑 테이블 가상 주소의 물리 메모리 위치를 알 수 있는 테이블 페이징 기법에서는 페이징 매핑 테이블 / 페이징 테이블 - 프로세스마다 존재 - 페이지 주소를 나타내는 page, 물리 주소를 나타내는 frame으로 구성 세그먼테이션 기법에서는 세그먼테이션 매핑 테이블 / 세그먼테이션 테이블 - 크기를 나타내는 limit, 시작 주소를 나타내는 address로 구성 페이징 기법 고정 분할 방식을 이용..

책읽기 2021.07.29

[쉽게 배우는 운영체제](요약)[Part-3][Ch-7] 물리 메모리 관리

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 메모리 관리의 복잡성 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되어 메모리 관리가 복잡 컴파일러 소스코드를 기계어로 번역하여 한꺼번에 실행할 수 있도록 프로그램 인터프리터는 한 행씩 번역하여 실행 오류 검출과 코드 최적화도 담당 컴파일 -> 목적 코드(object code) / 라이브러리 연결 -> 동적 라이브러리 포함 * 동적 라이브러리 : 실행할 때 삽입되는 라이브러리, 함수가 변경되어도 새로 컴파일할 필요가 없음 메모리 관리자의 정책 가져오기 정책 - 프로세스가 필요로 하는 데이터를 메모리로 언제 가져올지 결정하는 정책 배치 정책 - 가져온 프로세스 메모리를 어디에 load할지 결정하는 ..

책읽기 2021.07.29

[쉽게 배우는 운영체제](요약)[Part-2][Ch-6] 교착 상태

이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다. ※ 요약 교착 상태 2개 이상의 프로세스 모두가 다른 프로세스의 작업이 끝나길 기다려 작업이 진행되지 않는 상태 시스템 자원, 공유 변수 / 파일, 응용 프로그램 사용시 발생 자원 할당 그래프 프로세스의 사용중인 자원, 기다리는 자원을 방향성 그래프로 표현한 것 자원의 할당 / 대기 상태를 한눈에 파악 가능 교착 상태 필요조건 상호 배제 (Mutual Exclusion) - 한 번에 하나의 프로세스만 사용 가능한 자원 비선점 (Non-preemption) - 할당된 프로세스로부터 강제로 뺏지 못하고 스스로 반납해야하는 자원 점유와 대기 (Hold and Wait) - 다른 프로세스에 할당된 자원을 기다리는 프로세스가 존..

책읽기 2021.07.28

[파이썬 알고리즘 인터뷰][그래프] 순열

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 순열 구현 책에서 구현된 코드 # 재귀 def permute(self, nums: list[int]) -> list[list[int]]: results = [] prev_elements = [] def dfs(elements): if len(elements) == 0: results.append(prev_elements[:]) for e in elements: next_elements = elements[:] next_elements.remove(e) prev_elements.append(e) dfs(next_elements) prev_elements.pop() dfs(nums) return results ..

책읽기 2021.07.28

[파이썬 알고리즘 인터뷰][그래프] 전화 번호 문자 조합

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 2~9 범위의 문자열에 대해 가능한 모든 문자 출력 책에서 구현된 코드 def letterCombinations(digits: str) -> list[str]: def dfs(index, path): if len(path) == len(digits): result.append(path) return for i in range(idex, len(digits)): for i in dic[digits[i]]: dfs(i + 1, path + j) if not digits: return [] dic = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6": "mno", "7..

책읽기 2021.07.28

[파이썬 알고리즘 인터뷰][그래프] 섬의 개수

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 1로 이어진 섬의 개수 출력 책에서 구현된 코드 def numIslands(self, grid: list[list[str]]) -> int: def dfs(i, j): if i = len(grid) or \ j = len(grid[0]) or \ grid[i][j] != '1': return grid[i][j] = 0 dfs(i+1, j) dfs(i-1, j) dfs(i, j+1) dfs(i, j-1) count = 0 for i in range(len(grid)): for j in range(len(grid[0])): if grid[i][j] == '1': dfs(i, ..

책읽기 2021.07.28

[파이썬 알고리즘 인터뷰] 12장 - 그래프

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 그래프 객체의 일부 쌍(pair)들이 '연관되어' 있는 객체 집합 구조 오일러 경로 한붓 그리기 모든 간선을 한 번만 방문하는 유한 그래프 NP-complete (Non-deterministic Polynomial time) problem 비결정론적 다항시간 해밀턴 경로 - 각 정점을 한 번씩만 방문하는 무향/유향 그래프 경로 - 오일러 경로는 간선 기준, 해밀턴 경로는 정점 기준 해밀턴 순환 - 해밀턴 경로이면서 원래 출발점으로 돌아오는 경로 외판원 문제 (TSP, Traveling Salesman Problem) - 해밀턴 순환 중 최단 경로 비교 해밀턴 경로 한 번만 방문하는 경로 해밀턴 순환 한 번만 방문하여 ..

책읽기 2021.07.28

[TCPschool][2장] MySQL 문법 (1/2)

이 글은 "TCPschool/코딩과 데이터/MySQL"을 읽고 주관적으로 작성된 글입니다. https://tcpschool.com/mysql/intro 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 1. 기본 문법 1) MySQL 구문 SQL 구문을 통해 데이터베이스에 작업 명령 ex) SELECT * FROM Reservation; 서버와 연결을 끊는 QUIT를 제외하고 세미콜론을 붙임 세미콜론이 SQL 구문의 구분 기준 키워드 / 구문dms 대소문자 구분이 없고, 테이블 명 / 필드 이름은 구분 SELECT * FROM Reservation; select * from Reservation; SeLeCt * FrO..

CS/MySQL 2021.07.28

[파이썬 알고리즘 인터뷰][해시테이블] 상위 K 빈도 요소

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 상위 k번 이상 등장하는 요소 출력 책에서 구현된 코드 # heapq 이용 def topKFrequent(self, nums: list[int], k: int) -> list[int]: freqs = collections.Counter(nums) freqs_heap = [] for f in freqs: heapq.heappush(freqs_heap, (-freqs[f], f)) topk = list() for _ in range(k): topk.append(heapq.heappop(freqs_heap)[1]) return topk # Counter def topKFrequent(self, nums: list..

책읽기 2021.07.27