CS 18

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

운영체제에서 페이지 교체 알고리즘은 가상 메모리 관리에 사용되는 중요한 개념이다. 가상 메모리는 물리적은 실제메모르(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

[네트워크] 웹 동작 방식

웹 동작 순서 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력한다 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색을 함 DNS 서버에서 해당 도메인 네임에 하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달 웹 URL 정보와 DNS로부터 받은 IP주소를 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성 생성된 HTTP 요청 메시지를 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소 컴퓨터로 전송 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL정보로 변환됨 웹 서버는 도착한 웹페이지 URL 정보에 해당하는 데이터를 검색 검색된 웹 페이지 데이터는 또 다시 HTPP 프로토콜을 사용하여 HTTP응답 메시..

CS 2023.10.02

[자료구조] Mutex와 Spinlock의 차이점

개념 뮤텍스(Mutex) Mutual Exclusion의 줄임말로, 동시서 제어를 위한 프로그래밍 개념 중 하나다. 한 번에 하나의 스레드만이 공유 자원에 접근할 수 있도록 보장하는 도구이다. 두 개 이상의 스레드가 동일한 작업을 하지 못하도록 뮤텍스를 사용하여 해당 자원에 접근을 직렬화한다. 예시로 열쇠로 잠겨있는 1인 화장실을 생각하면 된다. 화장실을 가려면 열쇠가 필수로 필요하다. 열쇠가 없다면 누군가 화장실을 사용 중이다. 열쇠가 생길 때까지 기다린다. 열쇠가 있다면 화장실엔 아무도 없는 거다 화장실을 이용한 본인만 열쇠를 제자리에 갖다 놓을 수 있다. 뮤텍스 작동 순서 Look: 스레드가 공유 자원에 접근하기 전에 뮤텍스로 잠근다.(이미 잠겼다면 하제까지 기다린다.) Access: 뮤텍스가 잠겨..

CS 2023.10.02

[자료구조] Tread와 Process의 차이 (쓰레싱)

프로세스와 스레드는 운영체제에서 프로그램을 실행하기 위한 구조다 1. 프로세스 운영 체제에서 독립적으로 실행되는 프로그램의 인스턴스 작업들이 동시에 일어나야 하고 서로 정보를 주고받아야 할 때 스레딩을 사용합니다. 예시로는 웹 브라우저나 워드 카카오톡 등 하나의 프로세스라고 하며 여러 작업을 동시에 처리할 경우 유용합니다. (예시: 화면 출력, 버튼 클릭, 알림) 2. 스레드 프로세스 내에서 실행되는 하나의 실행 흐름이다. 작업들이 서로 영향을 미치지 않고 따로 실행되어야 할 때 멀티프로세싱이 유용합니다. 예시로는 웹 브라우저 안에 여러개의 탭을 열면 각 탭 하나를 스레드라 부르며 3. 쓰싱 주로 메모리 부족으로 인한 과도한 페이지 교체 작업 때문에 발생한다 가상 메모리를 사용하면 디스크 일부를 RAM처..

CS 2023.10.01

[자료구조] 해시테이블(Hash Table)이란?

해시 테이블은 (Key, Value)로 한 짝을 이루어 데이터를 저장하는 자료구조 중 하나이며, 빠른 검색이 필요할 때 유리한 자료구조입니다. 해시테이블의 특징 빠른 검색 속도: 해시 테이블은 데이터셋의 크기와 관계없이 항상 일정한 시간 안에 원하는 값을 찾을 수 있다. 키-값 저장: 각 항목은 '키'와 '값' 쌍으로 저장된다. 사용자는 특정 '키'를 이용하여 해당하는 '값'을 빠르게 검색할 수 있다. 해시 충돌: 두 개 이상의 키가 동일한 해시값, 즉 동일한 인덱스로 변환되는 경우, 이를 '해시 충돌'이라고 한다. 충돌 처리 방법 중 체이닝으로 같은 인덱스에 해당하는 요소들을 연결리스트 등으로 관리하는 방법이 있다. 동적 확장 및 ..

CS 2023.09.30

[자료구조]Array와 Linked List의 차이

Array 연속적인 공간에 요소를 저장한다(인덱스로 한 번에 접근 가능) 배열 크기가 고정되어 있다. 특정 인덱스에 접근하는데 상수시간이 걸린다. 원소를 중간에 삽입, 삭제하면 비용이 많이 든다(인덱스에 맞게 원소들을 이동시켜야 하기 때문) 일열로 메모리에 저장되어 검색에 유리하다 Linked List 각 요소가 메모리 임의의 위치에 배치될 수 있으며, 각 요소는 다음 요소를 가리키는 링크로 연결이 된다. 배열 크기를 동적으로 조정할 수 있다. 특정 인덱스를 찾으려면 처음부터 순차적으로 탐색해야 한다. (길이가 길수록 오래 걸림) 원소 중간에 삽입, 삭제 비용이 적다 (데이터를 넣고 앞뒤 링크만 연결하면 된다. 단 특정 인덱스를 찾을 때 시간이 소요된다.) 다음 요소의 메모리 주소를 통해 리스트를 만든다.

CS 2023.09.30