728x90

Computer 120

캐시(Cache)

캐시(Cache) Cache Memory 캐시 메모리는 속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리다. 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게한다. 캐시의 지역성(Locality)를 이용한다. Cache Locality 캐시의 지역성이란, 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생하는 것을 말한다. 캐시의 적중률(Hit rate)을 극대화 하여 캐시가 효율적으로 동작하기 위해 사용되는 성질이다. 캐시의 지역성은 공간 지역성(Spatial Locality)과 시간 지역성(Temporal Locality)으로 나뉜다. 공간 지역성 : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높다는 특성 시간 지역성 ..

Computer/CS 2024.03.11

CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘 CPU 스케줄링은 다중 프로그램 환경에서 CPU의 사용 시간을 효율적으로 분배하기 위한 방법이다. 이를 통해 시스템의 성능을 최적화하고, 대기시간을 최소화하며, CPU 사용률을 극대화하는 것이 목표다. 알고리즘 종류 선입선출 스케줄링(FCFS : First-Come, First-Served Scheduling) 이 알고리즘은 먼저 도착한 프로세스부터 처리하는 알고리즘이다. 프로세스 실행 시간을 예측하기 쉽고 단순하고 공평하지만 CPU 버스트 시간이 긴 프로세스가 먼저 도착하면 다른 프로세스들은 긴 대기 시간을 감수해야 하는 호흡성문제가 발생할 수 있다. 최단 작업 우선 스케줄링(SJF : Shortest Job First Scheduling) CPU 버스트 시간이 가장 짧은 프로..

Computer/CS 2024.03.02

데드락(Dead Lock)/교착상태

데드락(Dead Lock)/교착상태 두 개 이상의 프로세스나 쓰레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태이다. 무한히 다음 자원을 기다리게 되는 상태를 말한다. 시스템 적으로 한정된 자원을 여러곳에서 사용하려고 할 때 발생한다 데드락의 발생조건 4가지 모두 성립해야 데드락 발생(하나라도 성립하지 않으면 데드락 문제 해결 가능하다.) 상호 배제(Mutual exclusion) 자원은 한 번에 한 프로세스만 사용할 수 있다. 점유 대기(Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점(No Preemption) 다른 프로세스에 할당된 자원은 사용이 끝날때까지 강제..

Computer/CS 2024.03.02

문맥교환(Context Switching)

문맥교환(Context Switching) 하나의 프로세스가 CPU를 사용중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기위해, 이전의 프로세스의 상태(문맥)을 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 이때 한 프로세스의 문맥은 그 프로세스의 프로세스 제어블록(PCB)에 기록되어 있다. PCB(Process Control Block) 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스 마다 유지하는 정보들을 담는 커널 내 자료구조로 커널 주소 공간의 data 영역에 존재한다. PCB에 저장되는 내용들 Process 상태 : CPU를 할당해도 되는지 여부를 결정한다. PC 값 : 다음에 수행할 명령어를 가리킨다. CPU Register : CPU연산을 위해 현 시점에 레지스터..

Computer/CS 2024.03.01

세마포어/뮤텍스_Semaphore/Mutex

Semaphore/Mutex 프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 여러 개의 프로세스가 동시에 접근하면 Cirtical section 문제가 발생 할 수 있다. 이를 해결하기 위해 데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야 한다. 동기화 도구에는 대표적으로 뮤텍스와 세마포어가 있다. 세마포어_Semaphore 공유된 자원의 데이터 혹은 임계영역(Critical section)등에 여러 프로세스 혹은 쓰레드가 접근하는 것을 막아준다. 사용하고 있는 쓰레드/프로세스의 수를 공통으로 관리하는 하나의 값을 이용해 상호배제를 달성한다. 공유 자원에 접근할 수 있는 프로세스/쓰레드의 최대 허용치만큼 동시에 사용자가 접근할 수 있으며, 각 프로세스는 ..

Computer/CS 2024.03.01

MIME(Multipurpose Internet Mail Extensions)

MIME(Multipurpose Internet Mail Extensions) 인터넷에서 전자메일을 통해 텍스트, 이미지, 오디오, 비디오 등 다양한 종류의 데이터를 교환할 수 있게 하는 표준이다. MIME은 인터넷 상에서 멀티미디어 데이터를 교환하기 위해 설계된 표준이다. 다양한 데이터 타입이 Content-Type 헤더를 통해 명시되며, 어떤 종류의 데이터가 포함되어 있는지를 알려준다. MIME 표준은 데이터 유형과 인코딩 방식을 명시하여, 이진 데이터나 다양한 문자 인코딩이 포함된 문서를 안전하게 전송할 수 있도록 한다. 인코딩 방식 : MIME은 이진 데이터를 ASCII 텍스트로 인코딩하는 방식을 사용한다.. 이를 통해, 이메일 시스템이나 다른 텍스트 기반 시스템에서도 이진 파일을 안전하게 전송할..

CGI(Common Gateway Interface)

CGI(Common Gateway Interface) 서버와 애플리케이션 간에 데이터를 주고 받는 방식 도는 컨벤션 웹 서버와 외부 프로그램 간의 인터페이스를 위한 표준이다. CGI를 사용하면, 웹 서버는 동적 컨텐츠를 생성하거나 클라이언트의 요청에 따라 데이터를 처리할 수 있는 외부 프로그램을 호출할 수 있다. 다양한 프로그래밍 언어로 작성될 수 있으며, 웹 서버에 의해서 실행된다. 사용자의 요청에 따라 CGI 스크립트가 실행되고, 스크립트는 실행 결과를 웹 서버로 다시 보내며, 서버는 그 결과를 사용자에게 전달한다. 장점 기능별로 프로그램을 분리하여 관리하기 때문에, 코드의 모듈성이 증가하고 유지보수가 용이하다. 단점 각 기능마다 별도의 프로그램을 유지해야 하므로, 전체 시스템의 복잡성이 증가하고 리..

스트림 소켓(Stream Socket) / 데이터그램 소켓(Datagram Socket)

스트림 소켓(Stream Socket) / 데이터그램 소켓(Datagram Socket) 스트림 소켓(Stream Socket) TCP를 사용하는 연결 지향적 소켓이다. 두 통신 당사자 간에 신뢰성 있는 양방향 통신 채널을 제공한다. 데이터는 바이트 스트림으로 전송되며, 데이터의 경계가 없다.(연속적이다.) 데이터그램 소켓(Datagram Socket) UDP를 사용하는 비연결형 소켓이다. 데이터를 독립된 메시지 형태의 패킷으로 전송한다. 각 패킷은 다른 패킷과 독립적이며, 네트워크를 통해 개별적으로 전송된다. 신뢰성보다는 빠른 데이터 전송을 중시한다.

HTTP(Hyper Text Transfer Protocol)

HTTP(Hyper Text Transfer Protocol) 정의 웹 컨텐츠(HTML, 문서, 이미지, 파일 등)를 교환하기 위한 프로토콜 어떤 방식으로 데이터를 교환할 지 정해놓은 표준 규칙 연결 방식(HTTP 버전별 상이) 데이터 전송 방식(Method) 데이터 형식(Content - Type) 기능 다양한 클라이언트 - 웹서버 통신의 효율과 호환성을 높인다. 클라이언트 - 서버 간 데이터 통신은 다양한 방식으로 이뤄질 수 있다. 모든 클라이언트와 서버가 각각의 방식으로 데이터를 교환한다면 매번 방식이 달라서 번거롭고 복잡하다. HTTP는 통신 과정에서 모든 클라이언트와 웹서버가 표준적으로 사용할 규칙이다. Hyper Text로 분류되는 데이터를 교환하는 데 최적화 되어 있다. HTML 문서 CSS..

웹 서버

웹 서버 웹 서버란 무엇인가? 웹 서버는 웹 사이트를 구성하는 핵심 요소중 하나이다. 웹사이트를 방문할 때 사용자의 웹 브라우저는 웹서버에 요청을 보내고, 웹서버는 웹 페이지를 포함한 다양한 콘텐츠를 응답으로 전송하낟. 다음과 같은 역할 수행 웹 페이지 제공 : HTML, CSS, Javascript등 웹페이지를 구성하는 파일들을 저장하고 사용자의 요청에 따라 전송한다. 정적 콘텐츠 제공 : 웹 페이지에 포함된 이미지, 동영상, 음악 등 정적 콘텐츠를 저장하고 전송한다. 동적 콘텐츠 처리 : 서버 측 스크립팅 언어(PHP, Python, Ruby등)를 사용하여 동적으로 생성된 웹페이지를 제공한다. 보안 및 권한 관리 : 사용자의 접근 권한을 관리하고 웹사이트의 보안을 유지한다. HTTP 지원 : 웹 서버..

728x90