본문 바로가기

분류 전체보기

(249)
빽 투더 기본기 [OS 4편]. 동기화와 Peterson' 알고리즘 이 글에서는 운영체제의 기초가 되는, Synchronization(동기화) 에 대해 정리해본다. 1. 동기화(Synchronization) 의 필요성 1.1. Shared data 와 Data inconsistency 먼저 동기화(Synchronization) 는 멀티 프로세스 혹은 멀티 쓰레드 상황에서의 이슈이다. 여러 개의 프로세스, 혹은 쓰레드가 공유된 자원, 데이터를 사용하는 경우, 스케쥴링 시스템에 의해 데이터의 일관성(Data Consistency) 를 지키지 못하는 경우가 생기는데, 이게 바로 문제다. 예를 들어, 내가 내 계좌에 1000원이 있다고 하자. 내가 500원을 출금하려고 하는 동시에, 친구가 내 계좌로 500원을 송금했다면, 내 잔고는 당연히 1000원이 있어야 맞다. 이 때 출..
빽 투더 기본기 [OS 3편]. CPU 스케쥴링 이 글에서는 CPU Scheduling (스케쥴링) 에 대해 정리해본다. 1. CPU 스케쥴링 1.1. 기본 개념과 용어 CPU 스케쥴링 목적 다중 프로그래밍을 함으로써, 항상 실행할 수 있는 프로세스를 있도록 하여, CPU 사용 효율을 극대화 하는 것이 목적이다. CPU, I/O burst 프로세스는 계산과 입출력의 반복. 계산(CPU burst) / 입출력(I/O burst) 선점 / 비선점 스케쥴링 선점은 RUN 중인 프로세스를 갑자기 중단시키고 다른 프로세스가 RUN 할 수 있는 방식 비선점은 RUN 중인 프로세스를 중간에 갑자기 중단 불가능. 일단 한 번 할당 받으면, 시간이 다 되거나, 완료 될 때까지 다른 프로세스들이 기다려야함. Dispatcher 스케쥴러가 선택한 프로세스를 CPU에 할당..
빽 투더 기본기 [OS 2편]. 쓰레드 이 글에서는 Threaad(쓰레드)에 대해 정리해본다. 1. Thread 란 1.1. Process vs Thread Process : 메모리에 올려져있는 실행중인 프로그램. 프로세스간 메모리 영역은 독립적이다. (stack, heap, data, text) 각 프로세스는 별도의 메모리에 할당되며, IPC 통신이 아니면 서로 접근할 수 없다. Thread : 프로세스 내에서 실행되는 흐름의 단위 프로세스 내에 쓰레드 단위로 stack 만 할당받고, heap, data, text 영역은 공유한다. 즉 쓰레드 간에는 데이터 힙 공간을 통해 IPC 를 거치지 않아도 자원 접근, 수정이 가능하다. 쓰레드는 프로세스 내부의 좀 더 경량화된 프로세스이다. 1.2. 왜 쓰는가? (Multi process vs Mul..
빽 투더 기본기 [OS 1편]. 프로세스 이 글에서는 운영체제의 기초가 되는, Process (프로세스)에 대해 정리해본다. 1. Process 란 1.1. Program vs Process Program : 디스크에 저장된 실행가능한 명령어 파일. 수동적인 개체. Process : 메모리에 올려져있는 실행중인 프로그램. 적극적인 개체. 프로그램이 실행되면 (메모리에 로드되면) 프로세스가 된다. 1.2. Process in Memeory 프로세스는 메모리에서 다음과 같은 독립적인 공간을 할당받는다. Stack : 임시 데이터들을 담는다. ex. 리턴 어드레스, 지역 변수 Heap : 동적 할당 데이터들을 담는다. ex. malloc() Data : 전역 변수를 담는다. Text : 모든 코드를 담는다. 1.3. Process State 프로세스..
빽 투더 기본기 [DB 1편]. 데이터 베이스 기초 핵심 다음 3가지가 가장 핵심 기초라고 생각되어 정리해본다. 기본 개념과 용어 트랜잭션 테이블 설계와 정규화 1. 기본 개념 단어 1.1. 용어 관계형 데이터 모델 릴레이션, 속성(필드, 컬럼), 튜플(레코드, 행) 도메인 각 필드가 가질 수 있는 모든 값들의 집합 원자값(atomic value, 더 이상 분리되지 않는 값)이어야 함 스키마 테이블 정의에 따라 만들어진 데이터 구조 차수 테이블 스키마에 정의된 필드의 수 테이블 인스턴스 테이블 스키마에 현실 세계의 데이터를 레코드로 저장한 형태 기수(cardinality) 테이블 인스턴스의 레코드의 수 2. 트랜잭션 2.1. 정의 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위 '하나의 작업' 에는 하나의 목표를 위해 여러 테스크가 포함된다. 예를 ..
pandas dataframe 에서 None 은 == 로 안잡힌다. 참고한 링크. Pandas - Filtering None Values I'm using Pandas to explore some datasets. I have this dataframe: I want to exclude any row that has a city value. So I've tried: new_df = all_df[(all_df["City"] == "None") ] new_df But then I g... stackoverflow.com 이를 한큐에 보여주는 스샷. is.null() 또는 isna() 로 해야 잡힌다.
[프로그래머스] 방문 길이 문제 방문 길이 (https://programmers.co.kr/learn/courses/30/lessons/49994) 풀이 1. 문제 조건 해석 문제도 직관적이고, 변수 조건도 무난, 아주 심플하다. 2. 알고리즘 U, L, D, R 을 하나씩 입력받으며, 그냥 순차적으로 트래킹하면 된다. visited 를 set 자료구조로 두어, 이미 지나간 길인지 아닌지 체크하면 된다. 주의해야할 점은, 트래킹에는 '단방향성' 이 존재하지만, 길 자체는 '양방향' 이라는 점이다. 3. 코드 def solution(dirs): dxs, dys = [-1, 0, 1, 0], [0, -1, 0, 1] d = {"U": 0, "L":1, "D":2, "R": 3} visited = set()..
[프로그래머스] 가장 먼 노드 문제 가장 먼 노드 (https://programmers.co.kr/learn/courses/30/lessons/49189?language=python3) 풀이 1. 문제조건 해석 먼저, 현재 노드로부터 가장 멀리 떨어진 노드와의 최단거리를 찾는다. 이 최단거리들 중, 가장 큰 값을 가지는 거리의 개수를 찾는 문제다. 2. 알고리즘 전형적인 BFS 문제다. 그냥 다 탐색하면서 거리를 잰 뒤, 마지막에 거리 중 가장 큰 거 개수 세면된다. 진짜 그냥 주어진대로 하면 됨. 3. 코드 from collections import defaultdict, deque def solution(n, edge): dists = {i:0 for i in range(1, n+1)} # 노드 1과 다른 노드들 사이의 거리를 담..