CS 26

[운영체제] 교착 상태(Deadlock)

식사하는 철학자 문제 1. 일정 시간 생각을 한다. 2. 왼쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다. 3. 오른쪽 포크가 사용 가능해질 때까지 대기한다. 만약 사용 가능하다면 집어든다. 4. 양쪽의 포크를 잡으면 일정 시간만큼 식사를 한다. 5. 오른쪽 포크를 내려놓는다. 6. 왼쪽 포크를 내려놓는다. 7. 다시 1번으로 돌아간다. 만약 모든 철학자들이 동시에 자신의 왼쪽 포크를 잡는다면, 모든 철학자들이 자기 오른쪽의 포크가 사용 가능해질 때까지 기다려야 한다. 그런데 모든 철학자들이 그러고 있다. 이 상태에서는 모든 철학자가 영원히 3번 상태에 머물러있어 아무것도 진행할 수가 없게 되는데, 이것이 교착(Deadlock)상태이다. 철학자: 프로세스 / 스레드 포크: 자원..

CS/운영체제 2024.02.08

[컴퓨터구조] 메모리(RAM), 캐시 메모리

메모리 데이터를 저장하는 기억 장치 RAM 주기억장치 특징 RAM에는 실행할 프로그램의 명령어와 데이터가 저장 RAM은 휘발성 저장 장치이고, 보조 기억 장치는 비휘발성 저장 장치 보조기억장치에는 CPU가 실행하고 싶은 프로그램을 저장하고, 이를 RAM으로 복사해 저장 후 실행 데이터 읽는 속도가 보조기억장치에 비해 빠름 CPU와 주기억장치에 캐시 메모리가 존재 용량과 성능 RAM 용량이 크면 많은 데이터를 미리 보조기억장치에서 가져와 미리 RAM에 저장 가능 RAM 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는 데 유리 용량이 필요 이상으로 커졌을 때 속도가 그에 비례해 증가하지는 않음 종류 DRAM(Dynamic RAM) : 시간이 지나면 저장된 데이터가 사라지는 RAM. 주기적으로 데이터를 ..

CS/컴퓨터구조 2024.02.08

[컴퓨터구조] CPU의 구성 요소, 작동 원리

1. CPU란? CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 장치이다. CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽어 들이고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성 요소가 있다. 2. CPU의 구성 요소 ALU 계산하는 부품 레지스터로부터 받아들인 피연산자와 제어장치로부터 받아들인 제어 신호로 연산을 수행 연산 결과와 플래그(추가적인 상태 정보)를 내보내 레지스터에 저장 제어장치 제어 신호를 내보내고, 명령어를 해석하는 부품 클럭 신호, 명령어 레지스터로부터 해석할 명령어, 플래그 레지스터 속 플래그 값, 제어 버스로 전달된 외부로부터 전달된 제어 신호를 받아들인다. CPU 내부에 제어 신호 내보냄(ALU, 레지스터에 전달) ALU에는 수행할 연산을 ..

CS/컴퓨터구조 2024.02.08

[네트워크] HTTP (무상태성, 비연결성)

HTTP HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜 hypertext 문서 간의 링크를 통해서 연결할 수 있는 html을 전송하는 프로토콜로 시작 지금은 html 텍스트 뿐만 아니라 http 메시지에 모든 것을 전송 http1/1.1 이 가장 많이 사용되는 버전 2, 3은 성능 개선에 초점 1.1이나 2는 tcp 프로토콜 위에서 동작 3은 udp 기반으로 개발됨 tcp 프로토콜이 속도가 느리기 때문에 성능 개선을 위해 udp 프로토콜 위에 애플리케이션 레벨에서 최적화도록 새로 설계된게 HTTP3 클라이언트 서버 구조 HTTP는 클라이언트 서버 구조로 되어있다. 양쪽이 독립적으로 진행할 수 있게 된다. Request Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대..

CS/네트워크 2024.01.31

[네트워크] GET 과 POST의 차이

HTTP 메소드 중 GET 과 POST에 대해 자세히 살펴보려 한다. GET 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드 데이터를 읽거나, 검색할 때 사용된다고 할 수 있다. GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 query string이라고 부른다. 파라미터인 name1과 name2를 통해 값을 전달 받을 수 있다. 요청 파라미터가 여러개면 &로 연결한다. ex) www.example.com/show?name1=value&name2=value2 특징 캐시가 가능하다. GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드 하는 대신 리소스의 복사본을 반환한다. HTTP 헤더를 통해 캐..

CS/네트워크 2023.04.12

[네트워크] URI와 웹 브라우저 요청 흐름

URI(Uniform Resource Identifier) "URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다" URI 단어 뜻 Uniform: 리소스 식별하는 통일된 방식 Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier: 다른 항목과 구분하는데 필요한 정보 URL, URN 단어 뜻 URL-리소스의 위치를 지정 URN-리소스의 이름을 부여 (URN이름만으로 실제 리소스를 찾을 수 있는 방법은 보편화되지 않음) URI와 URL을 같은 의미로 봐도 무방하다. (URI가 URL을 포함하기 때문에) URL 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment] EX)https:/..

CS/네트워크 2023.02.05

인터넷 네트워크 (IP, TCP/UDP, PORT, DNS)

인터넷 네트워크 내 PC가 메세지를 전달해야 하는 PC가 멀리 떨어져있다면 수많은 중간 노드로 이루어진 인터넷 망을 통해 보내야 한다. 안전히 목적지에 메세지를 도착하게 하려면 IP주소가 필요하다. IP(인터넷 프로토콜) 인터넷 환경에서의 통신규약. 지정한 IP주소에 패킷(Packet)이라는 통신 단위로 데이터를 전달한다. 패킷안에는 출발지 IP, 목적지 IP 등등 이 포함되어있다. 패킷 전달 과정 클라이언트에서 출발지, 목적지 IP 주소가 담긴 IP 패킷을 만들어 인터넷에 전달한다. 노드끼리 주소를 확인하여 목적지까지 도착한다. 서버에서는 메세지를 받았을 경우 IP 패킷을 다시 클라이언트에게 보낸다. 그런데 IP 프로토콜에는 한계가 있다. 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다..

CS/네트워크 2023.02.04

[운영체제] 동기화 기법

프로세스 동기화 동기화란? 프로세스들 사이의 수행 시기를 맞추는 것 하나의 자원을 하나의 프로세스만이 이용하도록 제어하는 것이다. 동기화에는 실행 순서 제어를 위한 동기화와 상호 배제를 위한 동기화가 있다. 1. 실행 순서 제어 동시에 실행되는 프로세스를 올바른 순서대로 실행하는 것이다. 예를 들면 txt파일에 값을 저장하는 Writer 프로세스와 값을 읽어들이는 Reader 프로세스가 있다면, Writer -> Reader 순서로 실행해야 한다. 2. 상호 배제 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하는 것이다. 계좌에 잔액을 넣는 두 프로세스가 있다면 한 프로세스가 잔액에 접근했을 때 다른 프로세스는 기다려야 한다. * 생산자와 소비자 문제: 물건을 생산해내는 프로세스와 물건을 ..

CS/운영체제 2023.01.08

[네트워크] 웹 액세스의 흐름, HTTP 프로토콜

웹 액세스의 흐름 유저가 웹 브라우저에 URL을 입력한다. URL로 지정한 웹 서버에게 HTTP 요청을 송신한다. URL에는 호스트명이 지정되기 때문에 DNS 서버에 IP주소를 질의하여 알아낸 뒤 TCP 연결이 맺어지고 HTTP 요청이 웹 서버로 송신된다. 웹 서버가 HTTP 요청을 해석한다. 웹 서버가 요청받은 파일을 웹 브라우저에 돌려보낸다. 보통 이 파일은 HTML 파일에 해당한다. 웹 브라우저가 수신한 데이터를 해석해서 웹 브라우저상에 표시한다. HTML(HyperText Markup Language): 웹 사이트의 내용을 기술하기 위해 사용되는 언어 HTTP(HyperText Transfer Protocol): 웹 서버로부터 파일을 전송받기 위해 사용되는 프로토콜 URL(Uniform Resou..

CS/네트워크 2022.12.22

[운영체제] CPU 스케줄링

CPU 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다. 프로세스 우선순위 우선순위가 높은 프로세스란 빨리 처리해야하는 프로세스들을 의미한다. (ex 입출력이 많은 프로세스) 상황에 맞게, 프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 운영체제는 프로세스마다 우선순위를 부여한다. 운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, 이를 기준으로 먼저 처리할 프로세스를 결정한다. 스케줄링 큐 연결리스트로 구현 각 PCB는 다음 PCB를 가리키는 포인터를 포함 운영체제가 매번 PCB를 검사하여 자원을 이용할 프로세스를 결정하는 것은 번거롭기 때문에, 효율적인 스케줄링을 위해 스케줄링 큐를 사용한다. 스케줄링 큐는 크게 두가지가 ..

CS/운영체제 2022.12.22