본문 바로가기

CS

(16)
혼자 공부하는 컴퓨터구조 + 운영체제 | 9장 ~ 11장 9장 운영체제 모든 프로그램은 하드웨어를 필요로 합니다. 이미지를 하드 디스크에 저장하는 프로그램은 하드디스크를 필요로 합니다. 이때 프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원, 혹은 줄여서 자원이라고 합니다. CPU, 메모리, 보조 기억장치, 입출력 장치 등과 같은 컴퓨터 부품들은 모두 자원이라고 볼 수 있습니다. 즉 모든 프로그램은 실행되기 위해 반드시 자원이 필요합니다. 여기서 실행할 프로그램에 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이 바로 운영체제입니다. 운영체제는 인터넷 브라우저, 게임과 같은 프로그램이기 때문에 여느 프로그램과 마찬가지로 메모리에 적재되어야 합니다. 다만 운영체제는 매우 특별한 프로그램이기 때문에 항상 컴퓨터가 부팅될 때 메모리 내 ..
혼자 공부하는 컴퓨터 구조 + 운영체제 | 1장 ~ 3장 1장 컴퓨터 구조 시작하기 개발할 때 문제없이 작동했던 코드가 실제 사용자들에게 선보이는 자리에서는 작동하지 않는 상황은 비일비재합니다. 이 경우 분명 코드상의 문법적인 우류만이 원인은 아닐 겁니다. 프로그래밍 언어의 문법만 알고 있는 살마에게 컴퓨터 코드를 입력하면 어찌어찌 알아서 결과물을 툭 내놓는 '미지의 대생'일 테니까요. 결국 이들은 컴퓨터라는 기계에 코드를 입력만 할 수 있을 뿐 그 이상을 하기는 어렵습니다. 하지만 컴퓨터 구조를 이해하고 있으면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있습니다. 컴퓨터 내부를 거리낌 없이 들여다보며 더 좋은 해결책을 고민할 겁니다. 왜냐하면 이런 사고가 가능한 이들에게 컴퓨터란 '미지의 대상'이 아닌 '분석의 대상'일 테니..
쉽게 배우는 운영체제 | 교착 상태 시스템 내에 임계 구역이 존재하면 프로세스간 상호 배제를 보장해야한다. 운영체제가 상호 배제를 보장하기 위해 잠금을 사용하다 보면 더 이상 진행되지 않는 교착 상태에 빠지는 경우가 있다. 이 장에서는 교착 상태가 무엇인지 그리고 이를 해결하는 방법에는 어떤 것이 있는지 살펴본다. 교착 상태의 개요 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 교착 상태(dead lock)이라고 한다. 이는 교통 체증이 심하여 서로 비켜주기를 기다리며 꼼짝 못하는 상태에 비유할 수 있다. 컴퓨터 시스템에서 교착 상태는 시스템 자원, 공유 변수(또는 파일), 응용 프로그램 등을 사용할 때 발생할 수 있다. 교착 상태는 다른 프로세스와 공유할 수 없는 자원을 사용할 때..
쉽게 배우는 운영체제 | 공유 자원과 임계구역 공유 자원의 접근 공유 자원(shared resource)은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등을 말한다. 공유 자원은 공동으로 이용되기 때문에 누가 언제 데이터를 읽거나 쓰느냐에 따라 그 결과가 달라질 수 있다. 따라서 프로세스들의 공유자원 접근 순서를 정하여 예상치 못한 문제가 발생하지 않도록 해야한다. 2개 이상의 프로세스가 공유 자원을 병행적으로 읽거나 쓰는 상황을 경쟁 조건(race condition)이 발생했다고 한다. 임계 구역과 관련된 전통적인 문제로 생산자-소비자 문제가 있다. 생산자-소비자 문제에서는 생산자 프로세스와 소비자 프로세스가 독립적으로 작업을 한다. 생산자는 물건을 계속 생산해서 버퍼에 넣고 소비자는 계속 버퍼에서 물건을 가져온다. 또한 버퍼가 비어이는..
쉽게 배우는 운영체제 | 프로세스 동기화 프로세스 간 통신 프로세스는 시스템 내에서 독립적으로 실행되기도 하고 데이터를 주고받으며 협업하기도 한다. 프로세스가 다른 프로세스와 데이터를 주고 받는 프로세스간 통신(IPC)에는 컴퓨터 내에 있는 프로세스뿐만 아니라 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신도 포함된다. 프로세스 간 통신의 종류 - 프로세스 내부 데이터 통신: 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신이다. 프로세스 내부의 스레드는 전역 변수나 파일을 이용하여 데이터를 주고받는다. - 프로세스 간 데이터 통신: 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우로, 공용 파일또는 운영체제가 제공하는 파이프를 사용하여 통신한다. - 네트워크를 이용한 데이터 통신: 여러 컴퓨터가 네트워크로 연결되어 있을..
HTTP 완벽 가이드 | URL과 리소스 URL과 리소스 URL은 인터넷의 리소스를 가리키는 표준이름이다. URL은 전자 정보 일부를 가리키고 그것이 어디에 있고 어떻게 접근할 수 있는지 알려준다. 인터넷의 리소스 탐색하기 URL은 통합 자원 식별자(Uniform Resource Identifier) 혹은 URI라고 불리는 더 일반화된 부류의 집합이다. URI는 두가지 주요 부분집합인 URL과 URN으로 구성된 종합적인 개념이다. URL을 사용하면 리소스를 일관된 방식으로 지칭할 수 있다. 대부분의 URL은 동일하게 '스킴://서버위치/경로' 구조로 이루어져있다. 따라서 인터넷 상의 모든 리소스를 가리키고 가져오기 위해, 그리고 모든 사람이 같은 방식으로 이름을 써서 리소스를 찾을 수 있도록 단일 방식의 작명 규칙을 가진 것이다. URL은 애플..
HTTP 완벽 가이드 | 웹의 기초 HTTP 개관 전 세계의 웹 브라우저, 서버, 웹 애플리케이션은 모두 HTTP (HyperText Transfer Protocol)을 통해 서로 대화한다. HTTP는 현대 인터넷의 공용어이다. HTTP는 전세계의 웹 서버로부터 대용량 정보를 빠르고, 간편하고, 정확하게 사람들의 PC에 설치된 웹브라우저로 옮겨준다. HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에 데이터가 지구 반대편에서 오더라도 전송중 손상되거나 꼬이지 않음을 보장한다. 웹 클라이언트와 서버 HTTP클라이언트와 HTTP서버는 월드 와이드 웹의 기본 요소이다. 웹 브라우저는 서버에게 HTTP 객체를 요청하고 사용자의 화면에 보여준다. 리소스 웹서버는 웹 리소스를 관리하고 제공한다. 가장 단순한 웹 리소스는 웹서버 파일 시스템..
쉽게 배우는 운영체제 | ch10. 입출력 시스템과 저장장치 입출력 시스템 컴퓨터는 필수장치인 CPU와 메모리, 주변장치인 입출력장치와 저장장치로 구성되며 각 장치는 메인보드에 있는 버스로 연결된다. 저속 주변장치: 메모리와 주변 장치 사이에 오고 가는 데이터의 양이 적어 데이터 전송률이 낮은 장치를 말한다. 키보드의 경우 아무리 빨리 타이핑을 한다고 해도 1초에 1KB를 넘지 않으므로 저속 주변장치 고속 주변장치: 메모리와 주변장치 사이에 대용량의 데이터가 오고 가므로 데이터 전송률이 높은 장치. 출력 장치인 그래픽 카드의 경우 모니터에 초당 수싲밪으이 그래픽을 보여주어야 하기 떄문에 고속 주변장치이다. 여러 주변장치는 메인보드 내의 버스로 연결된다. 그런데 버스에는 많은 종류의 장치가 연결 되기 때문에 버스를 1개만 사용하면 병목 현상이 발생한다. 따라서 여러..