전체 글 80

[운영체제] 페이지 교체 알고리즘

운영체제에서 페이지 교체 알고리즘은 가상 메모리 관리에 사용되는 중요한 개념이다. 가상 메모리는 물리적은 실제메모르(RAM)보다 큰 프로세스의 주소 공간을 지원하기 위해 사용한다 페이지 교체 알고리즘은 실제 메모리가 부족할 때 어떤 페이지를 디스크로 스왑하고 새로운 페이지를 로그할지 결정하는 방법을 정의한다. 메모리가 가득 차면, 추가로 페이지를 가져오기 위해서 안쓰는 페이지를 Out하고, 해당 공간에 현재 필요한 페이지를 in 시켜야 한다. 여기서 어떤 페이지를 out시켜야할 지 정해야 하는데 기왕이면 수정이 되지 않는 페이지를 선택하는것이 좋다. out 되는 페이지를 victim page라고 부른다 기왕이면 수정이 되지 않는 페이지를 선택하는 것이 좋다. 페이지 교체 알고리즘 종류 FIFO(First..

CS 2023.10.10

[운영체제] 주 메모리 관리

메인메모리에 프로그램이 로드되어있는 상태를 프로세스라고 한다 메모리: 바이트로 Array 배열로 쭉 저장되어 있고 메모리에는 주소가 저장되어있다. 인스트럭션(instruction)은 컴퓨터에게 일을 시키는 단위로서, 컴퓨터가 알아들을 수 있는 기계어로 이루어져 있는 명령이다. 메모리 스페이스(Memory Space): 각 프로로세스가 별도의 메모리 공간을 갖고 있어야한다.

CS 2023.10.10

[운영체제] CPU 스케줄링이란? (선점, 비선점)

CPU 스케줄링은 컴퓨터 시스템에서 여러 개의 프로세스가 동시에 실행될 때, 어떤 프로세스가 CPU를 사용할 것인지 결정하는 작업이다. 스케줄러 스케줄러는 CPU가 놀지 않고 항상 일을 할 수 있도록 프로세스를 선택하는 역할을 한다 프로세스가 Running 상태에서 작업을 마치거나 등등의 이유로 Running 공간을 벗어나면 CPU는 놀고 있게 된다. 스케줄러는 CPU가 놀지 못하도록 다음 running할 프로세스를 선택하여준다 (ready 큐라는 공간은 CPU 사용을 기다리는 프로세스들이 모여있다.) 스케줄러는 이 공간에서 다음 프로세스를 선택한다 디스펙쳐 디스펙쳐쳐는 스케줄러가 선택한 다음 프로세스를 context switching 하는 역할이며, 선택된 프로세스가 어디서부터 작업을 시작해야 할지 적..

CS 2023.10.06

[WEB] DNS (Domain Name System)란?

DNS는 인터넷에서 도메인 이름과 IP 주소 간의 매핑을 관리하는 시스템이다 인터넷에서 통신을 할 때, 컴퓨터나 기기는 IP 주소를 사용하여 서버에 접속하고 데이터를 교환한다. DNS는 도메인 이름을 해당하는 IP 주소로 변환하는 역할을 합니다. DNS 시스템의 주요 구성 요소는 DNS 서버: 도메인 이름과 IP 주소 간의 매핑 정보를 저장하고 관리하는 서버입니다. DNS 레코드: DNS 서버에 저장된 도메인 이름과 해당하는 IP 주소 간의 매핑 정보입니다. DNS 리졸버: 컴퓨터나 네트워크 장치에서 실제로 DNS 조회를 수행하는 소프트웨어나 하드웨어입니다.

CS 2023.10.05

[데이터베이스] 정규화란?

정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는것이다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, 데이터를 효율적으로 관리할 수 있기 때문에 DB의 저장 용량 역시 줄일 수 있다. 정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화 하여 데이터 구조를 효율적으로 만들기 위해서 사용된다. 정규화는 크게 4가지 단계가 있다. 제 1 정규형(1NF): 각 컬럼의 값이 원자적(더 이상 분해할 수 없는)이어야 합니다. 즉, 하나의 컬럼에 여러 개의 값이 들어가지 말아야 한다. 아래 테이블은 가수들의 취미를 정리한 테이블이며, 제 1정규화가 진행되지 않은 테이블이다. 아래 는 제1 정규화를 마친 테이블의 모습이다.

CS 2023.10.04

[Python] math, datetime, time, calender 모듈과 임포트 방식 4가지

임포트 방식 4가지 # 기본 임포트 방식 import random print(random.randint(1, 10)) # r로 별칭을 주어 모듈 사용 import random as r print(r.randint(1, 10)) # 별칭도 없이 바로 사용하기 # from을 사용하면 randint를 바로 사용할 수 있게 된다. from random import randint print(randint(1, 10)) # 여러개 임포트 가능하다 from random import random, randint print(randint(1, 10)) # random 내부 모든 함수 임포트 from random import * print(randint(1, 10)) math 모듈 # math 임포트 import math..

Python 2023.10.04

[Python] random 모듈 (랜덤)

모듈이란 함수나 변수, 클래스 등을 모아놓은 파일이다. random 함수를 사용하기 위해선 초기 작업이 필요하다. 파이썬에는 random() 함수가 없기 때문에 random 모듈을 가져와서 사용해야 한다. import random # random 모듈 사용하기 위해 정의random 함수 사용 print(random.random()) # 모듈을 사용해서 random()함수 호출(기본 0~1 사이 실수를 반환) #결과: 0.6847956453663325정수형으로 random함수 호출 print(random.randint(1, 10)) # 리스트, range() 함수와 다르게 뒷 자리 숫자 10을 포함하여 출력된다(범위 1부터 10까지) 결과: 5random() 사용하여 구구단 만들기 score = 0 # 점..

Python 2023.10.04

[Python] 튜플(수정 및 추가 불가능 함)(상수 리스트라 생각하면 됨)

튜플 만들기 (아래 4가지 방법으로 생성할 수 있다.) 튜플은 추가 및 수정이 불가능하기 때문에 tu3와 같은 반값을 만들 이유가 없다. tu1 = (1, 2, 3) tu2 = 4, 5, 6 tu3 = () tu4 = tuple() print(type(tu1), tu1) # (1, 2, 3) print(type(tu2), tu2) # (4, 5, 6) print(type(tu3), tu3) # () print(type(tu4), tu4) # ()따옴표로 구분하지 않으면 int로 인식한다. tu1 = (1) # int로 인식 tu2 = (2,) # 튜플로 인식 tu3 = 3 # int로 인식 tu4 = 4, # 튜플로 인식튜플의 추가, 수정, 삭제 테스트 gift = ('장난감', '..

Python 2023.10.04

[Python] 리스트 정렬하기

리스트 정렬하기 오름차순으로 정렬하기 scores = [60, 95, 75, 85, 90] scores.sort() print(scores) # [60, 75, 85, 90, 95]내림차순 정렬하기 scores.sort(reverse=True) print(scores)원본 복사 후 복사본 리스트 정렬, 복사본 오름차순 정렬 sorted_scores = sorted(scores) sorted_scores_revers = sorted(scores, reverse=True) print(scores) # [60, 75, 85, 90, 95] print(sorted_scores) # [95, 90, 85, 75, 60]정렬하는 코드로 출력까지 담당하면 안된다 결과: None print(scores.sort()) ..

Python 2023.10.03