CS 66

암호화 방법

암호화 리스트 정리 양방향 암호화 1. 대칭키 : 암호화키와 복호화 키가 같은 것. - 스트림기반 : 비트단위 암호화 방식 - 블록기반 : 블록단위 암호화 방식. 문자열 단어 하나하나를 블록으로 나누어서 암호화 2. 비대칭키 : 암호화키와 복호화 키가 다름 - ECC(Elliptic Curve Cryptography) : 타원곡선 암호화. 비트코인에 사용 - RSA : 소인수분해 - DH 단방향 암호화 - Hash를 이용

메모리 단편화

내부단편화 주 기억장치에서 가용한 공간에 프로세스를 할당하고 남은 영역이 생기는 것 외부단편화 주 기억장치에서 가용한 공간의 합은 프로세스의 크기보다 크지만, 나누어져 있어서 프로세스를 올릴 수 없는 경우. 해결방법 1. 압축 : 주기억장치 내 분산되어 있는 공간을 압축하여 큰 공간 하나를 만드는것 2. 페이징기법 : 프로세스를 "페이지"로 나누고, 주기억 장치를 "프레임"으로 나누어 프로그램을 실행시 페이지 단위로 프레임에 옮기는 기법

CS/운영체제 2023.11.13

DNS서버

DNS란 Domain Name Service의 약자로서, 컴퓨터가 인식할 수 있는 IP주소와 사람이 기억하기 쉬운 도메인이름을 서로 치환해주는 서비스. DNS의 네가지 서버 1. DNS recursor 클라이언트로 부터 요청을 받는 서버. 이미 처리한 적이 있는 주소의 경우 캐시를 통해 빠르게 응답 2. Root nameserver 요청받은 host이름의 TLD서버의 위치를 알려준다 (.com .net 최상위 확장자 서버의 dns위치를 알려준다) * .com이 top 래밸인 이유? 맨뒤 도메인이름(.com .net .kr 등)의 개수는 많지 않지만 앞에 도메인이름은 무수히 많다. 따라서 시작부터 적은수의 분기를 타기위해 뒤에서부터 계층적으로 도메인이름은 구성되어 있다. 3. TLD server 요청받은..

CS/네트워크 2023.09.10

스크럼

스크럼이란? - 프로젝트 관리를 위한 에자일 방법론 - 3가지 산출물, 3가지 미팅이 있음 - 15분의 제한된 시간 동안 서로의 문제점을 투명하게 공유하고 커뮤니케이션하며, 정형화된 틀이 아닌 개개인의 경험을 중시하여 유동적으로 프로젝트 방향을 이끌어나가는 것을 인정한다. 3가지 산출물 1. 제품 백로그 : 제품에 담고자 하는 "기능"들을 정리한 목록. 제품 책임자가 우선순위 결정. 2. 스프린트 백로그 : 스프린트 동안 개발할 "과업"을 정리한 목록. 3. 소멸차트 : 개발을 왈료하기까지 남은 작업량을 보여주는 그래프 3가지 미팅 1. 일일 스크럼 : 매일 진행하는 15분간의 프로젝트 진행상황 공유 회의. 각자가 한 일, 문제점 등을 이야기 함. 2. 스프린트 계획 : 스프린트에 대한 목표를 세우고백..

java를 이용한 소켓프로그래밍

TCP IP 소켓 프로그래밍 - TCP IP 프로그래밍을 통한 통신 실습 - client에서 데이터를 주고, server에서 받고, 다시 server에서 데이터를 주고 client에서 데이터를 받는 순서 예시코드 TcpServer.java package clip18; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.time.LocalTime; public class TcpServer { public static void main(String[] args) { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(8888); Sy..

CS/네트워크 2023.06.13

[페이지교체 알고리즘]

페이지 교체 알고리즘 페이징 기법으로 메모리를 관리하는 운영체제에서 페이지의 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지 결정하는 방법. FIFO(Fist In Fist Out) 알고리즘 - 가장 먼저 들어온 페이지를 교체 - 그림 LRU(Least Recently Used) 알고리즘 - 가장 오랫동안 사용하지 않은 페이지를 교체하는 것 - 그림 LFU(Least Frequently Used) 알고리즘 - 참조횟수가 가장 적은 페이지 교체하는 것 - 그림 MFU(Most Frequently Used) 알고리즘 - 가장 많이 참조된 페이지를 교체하는 알고리즘 - 그림 OPT(Optimal) 알고리즘 - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 알고리..

CS/운영체제 2023.04.23

[가상메모리] 가상메모리, 요구페이징

가상메모리- 메모리가 실제 메모리보다 많이 보이게 하는 기술 - 가상메모리, 메모리맵, 물리메모리 로 구성됨 - 필요한 데이터중 실제메모리에 없는 데이터는 디스크(backing store)에서 가져옴 요구페이징(demand paging)- 프로세스의 페이지 전체를 메모리에 올리지 않고, CPU가 요청할 때 필요한 일부 페이지만 메모리에 올리는 것을 의미 페이지 폴트(page faults)- 어떤 페이지에 접근하려고 했을 때 해당 페이지가 실제 물리 메모리에 부재할 때 때 뜨는 인터럽트 - 페이지 폴트시 동작순서 (운영체제가 페이지폴트 해결 후 동일 명령을 다시 수행함)- 페이지 폴트 발생 후 물리메모리가 가득 차면, 페이징교체 알고리즘이 수행된다.

CS/운영체제 2023.04.23

네트워크 방화벽이란

방화벽이란? 외부 사용자들이 내부 내트워크에 접근하지 못하게 하는 네트워크 방어도구. 방화벽의 종류 1. 패킷 필터링 1.1 패킷 필터링이란 ? : 라우터에서 행해지는 필터링. 발신지의 IP/protocal/port/패킷등에 조건을 걸어 허용된 ip등 만을 접속하게 해주는 방화벽 기법 1.2 장점 : 별도의 방화벽 필요없이 라우터만으로 방화벽을 설정할 수 있다는 장점이 있다. 2. 어플리케이션 프록시 방화벽 2.1 어플리케이션 프록시 방화벽이란 ? : 어플리케이션 게이트웨이를 통한 방법. 2.2 프록시란? : 사설 통신망의 사용자가 공중 통신망을 간접적으로 엑세스할 수 있도록 한 네트워크 서버 3. 웹방화벽 3.1 웹서버 앞에 위치하여 외부로 부터 들어오는 HTTP/HTTPS트래픽을 감시. 악의적인 공..

CS/네트워크 2023.03.30

DEADLOCK의 정의, 조건, 해결책

DEADLOCK(교착상태) 이란 둘 이상의 프로세스가 각자 서로가 필요한 자원을 점유한 상태로 무한정 대기하는 상황 DEADLOCK 발생조건 다음 네 조건을 만족하면 데드락에 빠질 수 있는 가능성이 있다. 1. 상호배제 : 자원들은 한 프로세스만 점유할 수 있다. 2. 점유대기 : 특정 프로세스에게 쓰이고 있는 자원이 다른 프로세스에게도 필요하여 대기하는 다른 프로세스가 존재 3. 비선점 : 다른 프로세스가 자원을 점유하고 있을 때 강제로 뻇을 수 없다 4. 순환대기 : 프로세스 P0,P1,P2...Pn 이 존재할 때, Pk-1이 Pk가 필요한 자원을 가지고(Pn은 P0가 필요한 자원보유) 있는 상황 DEADLOCK 해결 1. 예방법(데드락 상태를 사전에 예방, 조건에 대한 부정) 1.1 상호배제 부정 ..

CS/운영체제 2023.03.16

전통적 동기화 예제들

생산자 소비자 문제(Producer and Consumer Problem) * 다른말로 유한버퍼문제(bounded buffer problem) - 생산자(producer)는 버퍼에 데이터를 생산하고, 소비자(consumer)는 버퍼에 데이터를 소비하는 상황 - 버퍼는 유한하기 때문에 버퍼에 데이터가 가득 차면 생산자가 생산할 수 없고, 비어있으면 소비자가 꺼내갈 수 없다.(이 상황에서 프로세스가 계속 대기하는 것을 busy waiting 이라고 한다) 독자 저자 문제(Readers Writers problem) - 독자(reader)는 데이터를 읽기만 하고, 저자(writer)는 읽고 수정하는 상황 - reader는 데이터를 읽기만 하기 때문에 임계구역 문제가 발생하지 않음. 따라서 writer에만 임계..

CS/운영체제 2023.03.16

임계구역(critical section)문제와 뮤텍스(mutex), 세마포어(semaphores)

임계구역 문제(the critical section problem) 멀티 프로세스가 공유자원을 사용하는 과정에서 발생하는 문제들. 다양한 프로세스가 공유자원(공통변수)를 건들이면서 데이터의 정합성이 깨지는 현상 * 임계구역 : 공유자원에 접근하는 코드 영역 임계구역 문제의 해결 조건 임계구역 문제를 해결하기 위해선 다음의 조건을 만족해야 한다. 1. 상호배제(mutual exclusion) : 특정 임계구역에서 프로세스가 실행되고 있으면, 다른 프로세스는 해당 임계구역에서 실행될 수 없음 2. 진행(progress) : 임계구역이 비어있을 때 프로세스는 무한정 기다리지 않고 순서에 맞게 진행된다. 3. 한정된 대기(bounded waiting) : 프로세스가 임계구역에 진입하려는 요청을 한 후 그 요청이..

CS/운영체제 2023.03.10

CPU 스케쥴링

CPU 스케쥴링 - CPU(특히 여러 코어의 CPU)의 이용률을 극대화 하기위해 CPU사용 순서 혹은 규칙을 정하는 알고리즘 디스패처 - CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈 - 한 프로세스에서 다른 프로세스로 문맥을 교환하는 일 - 사용자 모드로 전환하는 일 - 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동하는 일 선점(preemptive)와 비선점(nonpreemptive) - cpu스캐쥴링에는 선점방식과 비선점 방식이 존재 - 선점 : 특정 프로세스가 작동중일 때 다른 프로세스가 CPU를 뺏어서 사용할 수 있는 방식 - 비전섬 : 특정 프로세스가 작동중일 때는 다른 프로세스가 CPU를 뺏지 못하고 원래 프로세스가 끝날때 까지 기다리는 방식 CPU스..

CS/운영체제 2023.03.08

싱글스레드, 멀테스레드

스레드란 - 프로세스가 할당받은 자원을 이용하는 실행 단위 싱글스레드, 멀티스레드 - code, data, file(heap)은 공통영역 - registers, stack, program counter은 개별영역 멀티스레드 장점 1. 응답성 : 작업의 일부가 중단되거나 긴 작업이 수행되더라도 프로그램의 수행이 계속됨 2. 자원공유성 : 자신이 속한 프로세스 내의 스레드들과 메모리와 자원을 공유 3. 경제성 : 프로세스를 새로 생성하는 비용보다 스레드를 새로 생성하는게 훨씬 경제적임. 4. 확장성 :멀티스레드의 경우 한 프로세스를 여러 프로세서에서 수행할 수 있음

CS/운영체제 2023.02.27

봉쇄형(blocking), 비봉쇄형(nonblocking), 동기식(synchronous), 비동기식(asynchronous),

봉쇄형, 비봉쇄형, 동기식, 비동기식* 봉쇄형(blocking) : 매인 프로세스가 다른 프로세스가 동작하는 동안 멈춤 * 비봉쇄형(non-blocking) : 메인프로세스가 다른 프로세스가 일하는 동안에도 멈추지 않음 * 동기식(synchronous) : 작업의 순서를 보장함. 작업의 순서를 보장해야하기 때문에 메인프로세스가 다른 프로세스의 작업완료를 지속적으로 확인함(관심을 가짐). * 비동기식(asynchronous) : 작업의 순서를 보장하지않음. 작업의 순서를 보장하지 않기때문에 메인프로세스가 다른 작업을 수행하고있고, 다른 프로세스 작업을 신경쓰지않음(비관심)

CS/운영체제 2023.02.17