Stay Hungry Stay Foolish

전체 글 430

[OS] 06. 파일 시스템

(1) 개요 파일 시스템 = 파일 집합체 + 디렉터리 구조 관련된 정보를 포함하는 실제적인 파일들의 집합체이다. 시스템 내의 모든 파일에 대한 정보를 제공하는 디렉터리 구조이다. 파일 시스템은 OS가 관리하며, 파일과 폴더를 생성할 수 있는 시스템이다. File 정보의 집합체, 프로그램이나 데이터로 구성된다. 작성자에 의해 의미가 정의된 비트, 바이트, 행, 레코드들의 연속체이다. 파일의 이름, 형태, 작성 시기, 작성자, 길이 등의 속성 정보를 포함한다. Format 목적은 파일시스템을 디스크에 설치하는 것이다.(원래는 모두 지우는 용도로 알고 있음) 윈도우 전용 파일 시스템 종류 : FAT32, NTFS, EXFAT SSD,HDD는 포맷을 안 하면 못 쓰지만, USB는 기본적으로 FAT32로 포맷이 ..

운영체제 2023.10.16

[OS] 05. 디스크 스케줄링

(1) 개요 파일 시스템 데이터와 프로그램을 저장하고, 현재 컴퓨터 시스템은 주로 디스크 시스템 중심으로 파일시스템을 처리한다. 운영체제 디스크, CD-ROM, DVD-ROM 같은 기억용량이 큰 기억장치를 관리하고 운영한다. 그리고 파일을 추상적으로 관리한다. (2) 디스크 구조 1. 하드디스크(Hard Disk Drive : HDD)의 구조 플래터 : 데이터가 저장되는 곳으로, 양면으로 구성되어 있고 3-4판 정도가 있다. 액츄에이터 암 : 헤드를 데이터가 있는 곳으로 움직여준다. 헤드 : 데이터를 읽어준다. 전원 커넥터 : 하드디스크에 전원을 공급한다. 데이터 커넥터 : 하드디스크와 컴퓨터 사이의 데이터를 전송해준다. 스핀들 모터 : 플래터를 회전시킨다. (2) 이동헤드 디스크의 구성도 트랙(Trac..

운영체제 2023.10.16

[OS] 01. 운영체제 소개 (2)

(1) 운영체제에 대한 관점 1. 자원 관리자 관점의 OS OS는 자원이 효율적으로 사용되도록 하는 관리 책임이 있다. 프로세스 간에 발생할 수 있는 자원에 대한 경쟁 및 충돌을 해결한다. 자원의 상태를 추적하고, 어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하는 정책을 수립하고 자원의 할당과 회수를 한다. ▶ 운영체제가 관리하는 네 가지 범주의 자원 프로세스 관리 기능(프로세서의 할당과 회수) 프로세스들에 대한 CPU의 할당 및 회수를 한다. Process Scheduler 역할 : 어떤 프로세스에게 CPU 사용 권한을 줄 것인지를 결정한다. 기억장치 관리 기능(메모리 공간 관리) 프로세스 할당과 회수를 위한 주기억장치(Main Memory)공간 관리를 한다. 다중 프로그래밍 환경에서 ..

운영체제 2023.10.16

[OS] 04. 가상 메모리 관리

(1) 개요 ▶ Virtual Memory 사용자(Process)는 실제 주소 공간의 크기에 구애받지 않고 보다 큰 가상 주소 공간상에서 프로그램을 수행 가능하게 한다. 가상 메모리는 하나의 프로세스 전체가 한 번에 주기억장치 내에 존재하지 않고 일부만 있어도 수행되는 방법을 제공한다. 주기억장치보다 크기가 큰 프로세스 수행을 가능하게 한다. Virtual Memory : 가상 주소 공간을 가진다. (V.M이 클수록 성능은 저하되고, 디스크 상에 존재한다.) Main Memory : 실제 주소 공간을 가진다. OS는 V.M과 M.M 전체를 하나의 메모리로 인식한다. 전체 메모리는 가상 메모리를 포함한다. 가상 메모리가 추가 되어 많은 프로세스를 수행 가능하게 한다. CPU 입장에서는 V.M(디스크)를 물..

운영체제 2023.10.16

[OS] 03. 기억장치 관리

(1) 개요 프로그램과 데이터는 직접 실행되거나 참조되기 위하여 주기억장치 내에 존재해야 한다. 각 프로세스는 메모리 공간에 저장되고, 다수 프로세스들을 위한 주기억장치의 효율적인 관리가 필요하다. 이것이 OS의 역할이다. 주기억장치는 용량이 제한되어 있고 가격이 비싼 반면에, 보조기억장치(자기테이프, 하드디스크, 플로피디스크, CD-ROM, DVD-ROM, 플래시메모리, SSD, etc)는 용량이 크고 가격도 저렴하다. ▶ Address Binding & Type 정의 : 이진파일 형태로 디스크에 저장되어 있는 프로그램이다. (주기억장치 적재(로드)) logical address를 가진 프로그램이 주기억장치에 적재될 실제 physical address로 mapping되는 것을 의미한다. 1. Compi..

운영체제 2023.10.16

[OS] 02. 프로세스와 스레드 관리

(1) 개요 CPU는 컴퓨터 자원 중 가장 중요한 자원이다. 프로세스 스케줄링 *준비 완료(ready) 상태에 있는 프로세스들 중 어떤 프로세스를 CPU에 할당할 것인가를 결정하는 정책이다. CPU의 *처리량(Throughput)최대화와 *반환시간(Turnaround Time)의 최소화를 목표로 한다. *ready state : Main Memory에 올라와 있지만 CPU를 할당받지 못한 상태 *처리량 : CPU가 단위 시간당 처리하는 프로세스의 개수 *반환시간 : 각 프로세스가 시작해서 끝날 때까지 걸리는 시간 (2) 프로세스 관리 프로세스의 다양한 정의 실행(Executing Running)중인 프로그램 = 메모리에 로드된 프로그램 PCB(Process Control Block)를 지닌 프로그램 프로..

운영체제 2023.10.16

[OS] 01. 운영체제 소개 (1)

(1) 운영체제란? Operating System - 줄여서 OS라고 부른다. 컴퓨터 모든 자원들의 사용 및 공유 문제를 해결한다. 여기서 자원은 CPU, Memory, Monitor, 키보드 등을 말하는 것으로 OS가 이러한 모든 자원들을 통제한다. 컴퓨터 하드웨어와 사용자 간의 매개체 역할을 하는 시스템 소프트웨어로 사용자가 프로그램을 수행할 수 있는 환경을 제공해준다. 다시 말하면 하드웨어와 소프트웨어를 연결해주는 특수한 SW다. Ex) Mac, Android, Windows, Linux etc. 이러한 OS있어야 부팅이 되는데 없으면 컴퓨터 사용이 불가하다. ※ 부가설명 - 시스템 소프트웨어에는 OS, 컴파일러, 어셈블러, 로더, 링커 등이 있다. (2) 운영체제의 목적 컴퓨터 시스템을 편리하게 ..

운영체제 2023.10.16

[원티드] MySQL 기본기 다지기 | 프리온보딩 BE 챌린지 10월 (1주차)

MySQL 기본기 다지기 | 프리온보딩 BE 챌린지 10월 | 원티드 무료로 양질의 교육을 들어보세요! 챌린저만을 위한 다양한 혜택을 제공해드리고 있습니다. www.wanted.co.kr ☐ 데이터베이스의 원칙 1. 무결성(Integrity) : 데이터에 오류가 없어야 하며, 사용자가 저장하고자 하는 내용들이 그대로 저장되어야 한다. 2. 안전성(Reliability) : 말 한마디로 안전해야 하며, 고장도 잘 나지 않아야 한다. 3. 확장성(Scalability) : 서버를 운영하다보면 규모가 커질 수 있는데, 이때 많은 용량과 성능이 필요하게 된다. 따라서 수평적으로 부하를 분산하는 스케일 아웃(Scale-Out)방식으로 확장할 것인지, 아니면 서버의 용량 자체를 올리는 스케일 업(Scale-Up)방..

[알고리즘] DP (Dynamic Programming, 동적 계획법)

➤ DP 알고리즘이란? 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결하는 방식을 사용하여, 여러 번 반복되는 동일한 문제를 계산할 때의 비효율성을 방지하는 해결 방법이다. 큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용한다. 위의 그림을 보면 같은 함수들이 여러번 호출되는 것을 볼 수 있다. 컴퓨터 상에서 연산을 할 때 같은 함수를 여러 번 호출하고 사용하다 보면 메모리 낭비가 되고, 연산 속도도 늘어나기 때문에 비효율적이다. 이러한 문제를 해결하기 위해서 사용하는 것이 동적 계획법이다. DP 알고리즘으로 해결할 수 있는 대표적인 예시로 피보나치 수열이 있다. 피보나치 수열은 이전두 항의 합을 현재의 항으로 설정하는 특징이 있는 수열이다. 피보나치 수..

알고리즘 2023.09.25

BOJ 2748번 : 피보나치 수 2 (Python/Bronze 1)

2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 설명 n번째 피보나치 수를 출력하는 문제이다. 풀이 피보나치 수는 DP 알고리즘을 사용하는 것이 일반적이고 더 효율적이다. Solution 방식 1. Bottom-up(하향식) import sys input = sys.stdin.readline n = int(input()) dp = [0]*(n + 1) dp[1] = 1 #bottom-up def fibo(n): for i in range(2, n + 1): dp[i] = d..

BOJ 2312번 : 수 복원하기 (Python/Silver 3)

2312번: 수 복원하기 첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다. www.acmicpc.net 설명 양의 정수 N을 소인수분해 한 결과를 출력하는데, 인수와 인수의 수를 출력하는 문제이다. Solution #20:00 - 20:08 #양의 정수 N을 소인수분해 한 결과를 출력해라 #메모리와 시간이 오래 걸리는 코드 import sys input = sys.stdin.readline def res(n): for i in range(2, n + 1): cnt = 0 #인수가 곱해진 횟수 초기화 while n % i == 0: #정수 n이 i로 나누어지면 cnt += 1 #인수가 곱해진 횟수 카운트 n /= i #몫을 n에 저장..

BOJ 2960번 : 에라토스테네스의 체 (Python/Silver 4)

2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 설명 단순히 소수를 구하는 것이 아니다. 에라토스테네스의 체의 원리를 반영하면서 문제를 풀어줘야 한다. 다시 말해 2부터 N까지의 모든 정수 중 제일 작은 수부터 시작하여 그 소수의 배수들을 모두 지워나간다. 지워나갔으면, 안 지워진 가장 작은 수부터 또다시 반복한다. 여기까지가 에라토스테네스 체의 원리이다. 이 문제에서는 소수도 지워야 하고 배수도 지워야 하는데 그 과정에서 K번째로 지워지는 수를 찾는 것이다. 풀이 ➪ 에라토스테네의 체 알고리즘이 궁금하다면? 에라토스테네스의 체 에라토스테네스의 체란? 소수를 찾는 방법으로, 고대 그리스 수학자 에..

[알고리즘] 에라토스테네스의 체

에라토스테네스의 체란? 소수를 찾는 방법으로, 고대 그리스 수학자 에라토스테네스가 발견했다. 이 알고리즘을 사용하지 않고 단순히 소수를 구하려고 할 때 시간이 오래 걸리므로 소수를 구하고자 할 때 에라토스테네스의 체 알고리즘을 사용하는 것이 훨씬 효율적이다. Alogrithm 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색으로 표시) 자기 자신을 제외한 2의 배수를 모두 지운다. (선홍색으로 표시) 남아있는 수 가운데 2의 다음인 3은 소수이므로 오른쪽에 3을 쓴다. (초록색으로 표시) 자기 자신을 제외한 3의 배수를 모두 지운다. (연초록으로 표시) 위의 과정을 반복하면 구하고자 하는 구간의 ..

알고리즘 2023.09.23

BOJ 2583번 : 영역 구하기 (Python/Silver 1)

2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 설명 M×N 모눈종이에서 K개의 직사각형이 있고, 그 직사각형 부분을 제외한 나머지 영역의 개수와 넓이를 구하면 된다. 풀이 ✓ 그래프 탐색 - DFS로 풀이 Solution #18:35 - 19:17 -> 풀이봄 19:57 제출 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) #->런타임 에러 방지/재귀 깊이 변경 M, N, K = map(int, input().spli..

BOJ 2468번 : 안전 영역 (Python/Silver 1)

2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 설명 🌟 문제 핵심 - 안전 영역이 최대인 것을 구하라. 나도 처음엔 무슨 소리인가 했는데, 영역이라는 것을 생각해야 한다. 강수량은 주어지지 않으므로 모든 강수량을 따져야 한다. 다음과 같이 N = 5인 지역이 있다고 하자. 영역은 오른쪽, 왼쪽, 위, 아래가 이어져 있으면 한 영역으로 본다. 만약, 강수량이 0일 때 비가 오지 않음을 뜻하므로 잠기는 곳은 없다. 왼, 오, 위, 아래가 다 이어져있으면 하나의 영역으로 본다고 했으므로 안전 영역은 1이다. 만약, 강수..