CS
프로세스와 스레드에 대하여
운영체제란? 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어입니다. 이러한 운영체제는 CPU, 입출력 장치, 프로세스 등 컴퓨터 시스템 자원을 관리하여 컴퓨터 시스템이 제대로 작동하도록 해줍니다. 프로세스란? 컴퓨터에서 실행되는 프로그램을 프로세스라고 합니다. 프로그램은 명령어 리스트를 가진 파일이고, 이것이 보조기억장치에서 주 기억장치인 RAM에 실릴 때 프로세스로 작동되게 됩니다. 프로세스는 보통 하나 이상의 스레드로 구성되어 있습니다. 프로세스는 각각 독립된 메모리 영역을 할당받습니다. 메모리 영역은 크게 4가지로 구분될 수 있는데 종류는 다음과 같습니다. 1. 코드 영역 2. 데이터 영역 3. 힙 영역 4. 스택 영역 각각의 프로세스는 독립된 메모리 영역들..
주소창에 naver.com을 입력하면?
면접 질문에 자주 나오는 질문이라 정리할 필요성을 느껴 글을 쓰게 되었습니다. 우선 브라우저는 네트워크 호출을 하게 됩니다. 네이버 사이트의 html, css, script 이미지와 관련된 데이터들을 가져와야 되기 때문입니다. 이 작업을 수행하기 위해서 NAVER의 IP 주소를 파악해야 됩니다. 네이버 서버의 주소를 찾는 과정은 1. 브라우저에 해당 도메인이 캐시되어 있는지 확인합니다. 있으면 해당 IP주소를 리턴합니다. 2. 없을 경우 로컬에 저장된 hosts파일에서 참조할 수 있는 도메인이 있는지 확인합니다. 3. 모두 존재하지 않는다면 로컬 DNS 서버에 네이버의 ip주소를 요청하게 됩니다. 4. 로컬 DNS서버에 IP주소가 없다면 Root DNS 서버에 요청합니다. - Rot DNS는 IP주소를 ..
HTTP 프로토콜과 HTTPS에 대하여
HTTP HTTP는 HyperText Transfer protocol의 약자로 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 통신 규약을 뜻합니다. 서버 클라이언트 모델이기 때문에 클라이언트에서 보내는 요청을 서버가 처리하여 응답하는 방식으로 동작합니다. 또한 HTTP는 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동하게 됩니다. HTTP가 지니는 특징으로는 상태를 저장하지 않는 Stateless와 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless가 있습니다. HTTP의 장점은 상태 관리의 필요성이 없어 서버 디자인이 간단합니다. 단점으로는 이전 통신 정보를 모르기 때문에 매번 인증을 해줘야 하고, 이를 해결하기 위해 쿠키나 세션을 통한 데이터 ..
명령어 사이클과 인터럽트에 대하여
명령어 사이클 CPU가 명령어를 처리하는 정형화된 흐름을 명령어 사이클이라고 합니다. CPU는 명령어를 실행하기 위해 명령어를 메모리에서 가져와야 합니다. 이 단계를 인출 사이클이라 합니다. 명령어를 인출하고나면 명령어를 실행해야합니다. 이것이 실행 사이클입니다. 실행 사이클에서 제어장치가 명령어 레지스터에 담긴 데이터 값을 해석하고 제어신호를 발생시키게 됩니다. 프로그램을 이루는 모든 명령어는 일반적으로 인출과 실행사이클을 위 그림과 같이 반복하며 실행됩니다. 하지만 모든 사이클이 다음과 같이 이루어지는것은 아닙니다. 추가적인 메모리 접근이 더 필요한 경우가 있기 때문입니다. 이떄 필요한 작업들을 간접 사이클이라고 부릅니다. 그렇다면 인출, 실행, 간접 사이클이 명령어 사이클의 끝일까요? 이 밖에도 고..