본문 바로가기

스터디/CS & Network12

프로세스 (Process) 오늘의 주제는 프로세스!! 대부분 '프로세스와 스레드' 라는 주제의 글을 많이 볼 수 있는데, 저는 일단 프로세스를 공부하면서 연계되는 모든 과정을 최대한 나무처럼 뻗어나가면서 알아보려고 합니다. 즉, 제목은 프로세스 지만.... 내용을 보면.. 프로세스가 뭔지부터 시작해서 프로세스의 상태, PCB, fork() 등등.... 까지 들어갈 예정이랍니다. 정리해보면 아래 정도를 다룰 수 있겠네요😂 어우 진짜 CS는 알면 알수록 어디가 끝인지 모르겠지만 일단 오늘은 저정도만 보겠습니다. 아래 내용은 쉽게 배우는 운영체제 라는 책을 참고해서 작성했습니다 :) 프로그램? 프로세스? 뭐가 다른거야? 일단 프로그램은 하드디스크 같은 저장장치에 저장되어있는 정적인 상태를 말합니다. 어떠한 데이터를 사용해서 어떤 작업을.. 2021. 5. 19.
메모리 단편화 (Memory Fragmentation) 메모리 단편화가 뭐지? 먼저 컴퓨터를 공부하는 사람이라면 주기억장치에 대해 들어본 적 있죠? 주기억장치는 CPU가 직접 접근하여 처리할 수 있는 고속의 기억장치 (Memory) 로, 현재 수행되는 프로그램과 데이터를 저장하고 있습니다. 종류로는 ROM과 RAM이 있죠. 이 주기억장치에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 메모리 단편화가 발생했다고 합니다. 그리고 이 메모리 단편화는 내부 단편화와 외부 단편화로 구분할 수 있습니다. 내부 단편화 (Internal Fragmentation) 메모리를 할당할 때, 프로세스가 필요로 하는 크기보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황을 말합니다. 예를 들어,.. 2021. 4. 14.
메모리 구조에서 Stack과 Queue의 역할 메모리 구조에서 왜 Stack과 Queue가 필요하지? 라고 생각하실 수 있겠지만.. 메모리 구조를 공부하시다보면 스택, 힙, 데이터, 코드 영역이 있는 거 아시죠? 여기서 스택 영역을 우리가 생각하는 Stack 역할로 생각할 수 있고, 힙 영역을 Queue 역할로 생각할 수 있습니다. 여기서 힙과 큐를 혼동하실 수 있는데요, 지금 말하는 의미는 같지만 큐는 자료구조론에서 사용하는 용어이고 힙은 메모리 관련 용어로 사용한다고 생각하면 될 것 같네요! 그리고 이런 스택과 큐의 원리를 메모리 구조에서는 보통 데이터를 처리할 때 데이터를 임시로 저장하거나, 입/출력 장치의 데이터를 일시적으로 저장할 때 사용합니다. 데이터를 잠시 보관해두는 일을 하기 위해 메모리 주소와 인덱스를 일일이 지정하는 일은 너무 복잡.. 2021. 4. 14.
OSI 7계층이 뭐지?? 오늘은 네트워크 공부에서 빠질 수 없는 OSI 7계층에 대해서 알아보려 합니다. 솔직히 OSI 7계층에 뭐가 있는지, 각 계층의 역할이 뭔지 그냥 단순히 암기하기에는 내용이 많기도 해서 암기한답시고 단순하게 공부해놓으면 나중에 헷갈릴 때가 많습니다. 그리고 저는 단순암기보다 이해를 해야 기억에 더 잘 남는 편이라.. 이번에는 동작방식을 하나씩 따라가보며 이해해보려고 합니다...😄 먼저, OSI 7계층이 뭘까요?? 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 도대체 왜 나눴을까요? 우리의 공부량을 더 늘이기 위해서는 아니겠죠? 이렇게 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있도록 하기 위함입니다. 7단계 중 특정단계에서 이상이 생기면 다른 단계의 장비 및 소프트.. 2021. 2. 7.
RESTful API란? 안드로이드/iOS 개발을 하면서 API 통신을 할 때 보는 것이 RESTful API였는데요, 평소 RESTful API가 무엇인지 두루뭉실하게만 알고 있어서 누군가 물어본다면 얼버무리게 되어 한 번쯤은 날 잡고 정리를 해보고 싶었습니다. RESTful API가 뭔지 설명하기까지 우리가 알아야 할 건 REST가 무엇인지, REST가 가진 원칙이 무엇인지, 그래서 RESTful API가 무엇인지, 어떤 규칙이 있는지, 응답상태코드는 어떤게 있는지 등을 알아야 할 것 같습니다. 그럼 시작해볼까요? REST란? REST는 Representational State Transfer의 줄임말입니다. 그냥 직역하면 대표적인 상태 전송이 되네요? 이게 무슨 말일까요? REST는 자원을 이름(자원의 표현)으로 구분하여 .. 2021. 1. 28.
TCP 동작 방식 (3-way handshake, 4-way handshake) 웹 서비스 동작 방식을 보면, 사용자가 url을 입력하면 도메인 주소를 이용하여 DNS에서 IP 주소를 얻어오고, 그렇게 얻어온 IP 주소를 웹 데이터 형식으로 변하여 TCP 통신을 통해 웹 서버와 주고받게 됩니다. 이때 TCP 통신을 하기 위해 3-way handshake로 접속을, 4-way handshake로 접속 해제를 해주는 데요. 오늘은 TCP 동작 방식을 알아보기 위해 3-way, 4-way handshake 과정을 알아보겠습니다. Socket 생성 Client는 운영체제에 socket( ) 시스템 콜을 이용하여 소켓을 생성합니다. 운영체제는 소켓의 정보를 저장하기 위해 메모리 영역을 할당하고, 소켓 정보를 저장합니다. 3-way handshake Client는 Server와 연결하기 위해 .. 2021. 1. 8.
Web의 동작원리 이제는 생활에서 빼놓을 수 없는 인터넷. 하지만 정작 웹 사이트가 어떻게 동작하는지 아시나요? 그래서 오늘은 웹 URL을 입력하는 것부터 해당하는 웹 사이트가 나에게 보여질 때까지 어떤 과정이 일어나는지 알아보았습니다. (1), (2) 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력합니다. (3) 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색합니다. 도메인 네임이란, 웹 사이트의 주소를 찾기 위한 고유한 문자형 주소체계입니다. 원래 컴퓨터나 통신장비 간 통신에 최적화된 주소체계는 IP 주소지만, IP 주소는 숫자로 이루어져 있어서 사람이 기억하기 어렵기 때문에 도메인을 사용합니다. (4) DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 .. 2021. 1. 4.
DeadLock (교착 상태) 교착상태란? 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하여 무한정 기다리게 되는 현상을 데드락(DeadLock). 즉, 교착 상태 라고 합니다. 여러 개의 작업이 동시에 실행되는 멀티 프로세스, 멀티 스레드 프로그래밍 환경에서 발생할 수 있는 이슈입니다. 교착 상태에 대해 알아볼 때면 자주 등장하는 예시가 있는데요. 바로, 식사하는 철학자들 입니다. '식사하는 철학자들'은 운영체제의 교착 상태를 설명하기 위해 다익스크라가 만든 문제라고 합니다. 그 내용은 바로 이렇습니다. 5의 철학자들이 원형 식탁에 둘러앉아 식사를 하는데, 철학자들 사이에는 포크가 하나씩 놓여 있다. 철학자들이 식사를 하기위해서 지켜야 하는 규칙이 있는데, 바로 아래와 같다. 1. 왼.. 2020. 12. 21.
메모리 구조를 알아보자. 메모리 구조 운영체제는 프로그램의 정보를 읽어 메인 메모리에 공간을 할당해 로드한다. 이 메모리의 구조를 알아봅시다 ^_^.. velog.io 데이터나 프로그램을 저장하는 저장 공간은 계층 구조를 가집니다. CPU에 접근속도가 빠른 순으로 Register, Cache, Main Memory, External Memory로 볼 수 있는데, 이 게시물에서는 메인 메모리의 공간 구조를 다룰 것입니다. 제가 메모리 구조에 대해 궁금해지게 된 것은 프로세스와 스레드의 차이점을 공부한 이후였습니다. 프로세스는 각 메모리 영역을 독립적으로 할당받고, 스레드는 Stack 영역만 독립적으로 할당받고 나머지 Heap, Data, Code 영역은 같은 프로세스 내의 다른 스레드와 공유한다는데 도대체 이 4가지 영역의 특징이.. 2020. 12. 10.
버퍼, 캐시, 레지스터 (Buffer, Cache, and Register) 캐시와 버퍼, 그리고 레지스터는 데이터를 임시적으로 저장한다는 공통점이 있습니다. 그렇다면 어떤 경우에 어떤 것을 사용하게 될까요? 그리고 각자 어떤 특징이 있을까요?? 캐시(Cache) 먼저 캐시는 속도가 빠른 장치(CPU)와 느린 장치(메인 메모리) 사이에서 속도 차이에 따른 병목현상을 줄이기 위한 범용 메모리를 뜻합니다. 즉, 어떤 시스템 내에서 데이터의 집중적인 사용으로 인해 전체 시스템에 절대적인 영향을 미치는 부분의 사용 빈도가 늘어나 그 부분의 성능이 저하되어 전체 시스템이 마비되는 현상을 줄이기 위한 것입니다. 캐시는 자주 사용하는 데이터나 값을 복사해 놓는 임시 저장소라고 생각할 수 있는데, 이때 캐시의 접근 시간에 비해 원래 데이터(서버의 균일한 api 데이터 등)를 접근하는 시간이 오.. 2020. 10. 3.
커널 (Kernel) 우리가 항상 운영체제를 공부하다 보면 자주 볼 수 있는 단어가 있다. 바로, '커널(Kernel)' 이다. 뭐만 하면 커널에 의해서 관리된다. 커널에 의해 보호된다. 어쩌구 저쩌구..... 도대체 커널이 뭐길래, 이렇게 자주 언급될까??? 커널이란, 프로세스/메모리/저장장치/입출력 시스템 등을 관리하는 운영체제의 핵심적인 기능을 모아놓은 프로그램이다. 그만큼 운영체제의 핵심이라고 할 수 있으며, 운영체제의 성능은 커널이 좌우하게 된다. 컴퓨터가 부팅하는 순간 커널 코드가 메모리에 올라가고, 다른 프로그램과 다르게 항상 메모리에 상주(Memory Resident)한다. 여기서 잠깐 운영체제를 말하자면, 운영체제는 크게 커널과 인터페이스로 나눌 수 있는데 인터페이스는 커널에 사용자의 명령을 전달하고 실행 결.. 2020. 9. 3.
HTTP와 HTTPS 1. HTTP와 HTTPS 차이점 HTTP HTTPS - HyperText Transfer Protocol의 약자 - 포트번호 : 80 - 인터넷에서 사용하는 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위한 통신 규약 - 암호화가 전혀 되어 있지 않아, 그냥 텍스트 그대로 전송 - wireshark*와 같은 패킷캡쳐 프로그램으로 패킷캡쳐를 해보면 정보가 그대로 노출되어 있는 것을 볼 수 있습니다. * wireshark : 네트워크 패킷을 캡처하고 분석하는 오픈소스 도구 - HTTPS보다 트래픽이 적게 발생 - HyperText Transfer Protocol over Secure Socket Layer(SSL)의 약자 - 포트번호 : 443 - HTTP 프로토콜의 보안성을 강화한 프로토콜.. 2020. 7. 27.