본문 바로가기

Tech

[운영체제] 페이징과 세그멘테이션 페이징과 세그멘테이션은 가상 메모리를 관리하는 기법으로 프로세스가 사용하는 메모리 공간을 잘게 나누어 비연속적으로 실제 메모리에 할당하는 메모리 관리 기법이다. 페이징(Paging) 프로세스의 주소 공간을 페이지(page)란 단위의 고정된 사이즈로 나누어 물리적 메모리에 불연속으로 저장하는 방식 페이징 방식으로 메모리를 할당하게 되면 실제 프로세스가 실행될 때는 각각의 페이지들이 실제 메모리의 어디에 위치하고 있는지를 빠르게 알 수 있어야 함 프로세스의 입장에선 자신이 사용하고 있는 메모리 공간이 흩어져있는 페이지들이 아니라 하나의 연속된 메모리 공간으로 이해할 수 있어야지 프로그램 실행이 효율적이게 됨 → 페이징은 프로세스가 바라보는 메모리 주소 공간(논리 주소)와 실제 메모리 주소 공간(물리 주소)를..
[운영체제] 메모리 관리 메모리 관리가 필요한 이유 프로그램의 실행(프로세스)를 위해서는 메모리를 할당해야 함 메모리는 한정된 자원이기 때문에 멀티 프로그래밍 시스템에서는 여러 프로세스들이 메모리를 효율적으로 이용할 수 있도록 관리가 필요함 효율적인 메모리 참조(논리 - 물리 주소 변환) - 프로세스가 메모리 주소를 직접 참조하는 것이 아니라 프로세스의 주소 공간이란 것과 메모리의 주소 공간이란 것을 구분하고 있기 때문에 좀 더 빠르게 메모리 주소를 참조할 수 있는 관리 방법도 추가적으로 필요함. 스와핑(Swapping) CPU에서 실행되지 않는 프로세스 중 일부를 메모리가 아닌 디스크에 저장하는 기법 swap in : 디스크 → 메모리 swap out : 메모리 → 디스크 가상 메모리 기법의 핵심으로 디스크를 활용하여 큰 메모..
[프로그래머스] 카카오 블라인드 리쿠르트 2018 - 셔틀 버스 (Python) 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 ["23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"] "18:00" programmers.co.kr 카카오에서는 무료 셔틀버스를 운행하기 때문에 판교역에서 편하게 사무실로 올 수 있다. 카카오의 직원은 서로를 '크루'라고 부르는데, 아침마다 많은 크루들이 이 셔틀을 이용하여 출근한다. 이 문제에서는 편의를 위해 셔틀은 다음과 같은 규칙으로 운행한다고 가정하자. 셔틀은 09:00부터 총 n회 t분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m명의 승..
[프로그래머스] 기지국 설치 - Python 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 문제 설명 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다. 예를 들어 11개의 아파트가 쭉 늘어서 있고, [4, 11] 번째 아파트 옥상에는 4g 기지국이 설치되어 ..
[프로그래머스] 카카오 블라인드 리쿠르트 2021 - 합승 택시 요금 (Python) 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되..
[프로그래머스] 조이스틱 - Python 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 "JAZ"를 만들 수..
[프로그래머스] 카카오 블라인드 리쿠르트 2021 - 순위 검색 (Python) 순위 검색 from collections import defaultdict from itertools import combinations from bisect import bisect_left def solution(infos, queries): answer = [] tables = defaultdict(list) for info in infos: data = info.split(' ') conditions = data[:-1] score = int(data[-1]) for n in range(5): key_comb = list(combinations(conditions, n)) for k in key_comb: key = ''.join(k) tables[key].append(score) for i in..
[리트코드(LeetCode)] 33 Search in Rotated Sorted Array Search in Rotated Sorted Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 를 학습하면서 수록된 코드를 참고하였습니다. - 풀이 특정 피벗을 기준으로 회전하여 정렬된 배열로, 완전하게 정렬이 되어 있지 않아 일반적인 이진 탐색을 그대로 활용하기는 어려웠음. 먼저 피벗을 찾고, 배열이 피벗값만큼 회전되었음을 고려하여 이진 탐색을 적용하는 순서를 문제를 도출해야 했다. 피벗을 찾는 방법은 여러 가지가 있지만, 예시 입력 배열을 보면..