목록전체 글 (67)
개발일지

PCB 는 운영체제에서 프로스세에 대한 메타데이터를 저장한 "데이터"를 말한다. 번역하면 프로세스 제어 블록. 프로세스가 생성될 때 운영체제는 PCB를 생성한다. 프로그램이 실행되면 프로세스가 생성되고 프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당된다. 프로세스 메모리 할당 구조는 아래 따로 정리해놓았으니 참고하세용 https://kang96.tistory.com/83 프로세스의 메모리 구조 운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다. 스택 Stack 은 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 "동적"인 특징을 갖는다. kang96.tistory.com 만들어진 프로세스의 메타데이터*들이 PCB 에 저장되어 관리된다. 이..

운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당한다. 스택 Stack 은 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 "동적"인 특징을 갖는다. 스택영역은 함수가 함수를 재귀적으로 호출하면서 동적으로 크기가 늘어날 수 있는데 이때 힙과 스택의 메모리 영역이 겹치면 안되기 때문에 힙과 스택의 공간을 비워놓는 것이다!!! 힙 Heap 은 동적 할당할 때 사용되며 런타임 시 크기가 결정된다. 벡터같은 동적 배열은 당연히 힙에 동적 할당된다. 데이터 Data 영역은 전역변수, 정적변수(static으로 선언한)가 저장되고 정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들어있는 영역이다. 데이터 영역은 BSS 영역과 Data 영역으로 나뉘고 BSS 영역은 초..

인터넷 프로토콜 스위트 (internet protocol suite) 는 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜의 집합으로 이를 TCP/IP 4계층 모델로 설명하거나 OSI7계층 모델로 설명하기도 합니다. 오늘은 TCP/IP 계층 위주로 얘기를 해볼까합니다. 위 그림을 보면 계층으로 나누어져 있는데 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되어있습니다. 예를들면 전송계층에서 TCP 를 UDP 로 변경했다고 해서 인터넷 웹 브라우저를 다시 설치해야하는 것이 아닌 것처럼 유연하게 설계된 것입니다. 이런 공부를 하면서 느낀건데 정말.. 알면알수록 컴퓨터의 세계는 대단하고..다 이유가 있고.. 정말 밑바닥부터 알아야 나중에 쓰러지지 않는다는 것을 뼈저리게 ..

생성상태 create : 프로세스가 생성된 상태 fork(), exec() 함수를 통해 생성한다. 이때 PCB가 할당됨. - fork() : 부모 프로세스의 주소 공간을 그대로 복사해 새로운 자식 프로세스를 생성하는 함수다. 주소 공간만 복사할 뿐이지 부모 프로세스의 비동기 작업 등은 상속하지 않아@ - exec() : 새롭게 프로세스를 생성하는 함수. 대기상태 ready : 메모리 공간이 충분하면 메모리를 할당받고 아니면 아닌 상태로 대기하고 있으며 CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태다. 실행 상태 running : CPU 소유권과 메모리를 할당받고 인스트럭션을 수행 중인 상태를 의미한다. 중단 상태 blocked : 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태..

캐시 cache : 캐시는 데이터를 미리 복사해놓은 임시 저장소이자 빠른 장치와 느린 장치의 속도 차이에 따른 병목현상을 줄이기 위한 메모리를 말한다. 이릍 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고 무언가를 다시 계산하는 시간을 절약할 수 있다.!! 실제로 메모리와 CPU 사이의 속도가 차이가 너무 크기 때문에 그 중간에 레지스터 계층을 둬서 속도 차이를 해결한다. 이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 있는 계층을 캐싱켸층이라고 함!! ex) 캐시 메모리와 보조기억장치 사이에 있는 주 기억장치를 보조기억장치의 캐싱 계층이라고 할 수 있는 것.. 지역성의 원리 캐시 계층을 두는 것 말고 캐시를 직접 지정하기 설정할 때에는 어떻게 해야하남?? -> 자주 사용하는 데이터를 기..

메모리는 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치를 말한다. 보통 RAM; Ramdom Access Memory 를 일컬어 메모리라고 한다. CPU는 계산을 담당하고 메모리는 기억을 담당! 공장에 비유하자면 CPU 는 일꾼이고 메모리는 작업장이며, 작업장의 크기가 곧 메모리의 크기다!! 작업장의 크기가 클수록 창고에서 물건을 많이 가져다 놓고 많은 일을 할 수 있듯이 메모리가 크면 클수록 동시에 많은 일을 할 수 있다!! CPU 는 단순히 메모리에 올라와 있는 프로그램의 명령어들을 실행할 뿐!!! 메모리 계층 레지스터 : CPU 안이 있는 작은 메모리로 휘발성, 속도가 가장 빠름, 기억용량이 가장 작음 캐시 : L1, L2 를 얘기함, 휘발속, 속도 빠름, 기억용량 적음 주기억장치: RAM..

CPU; Central Processing Unit CPU는 산술논리장치, 레지스터, 제어장치로 구성되어있는 컴퓨터 장치를 얘기합니다. 단순히 메모리에 존재하는 명령어를 해석해서 실행시키는 일꾼이라고 생각하면 됩니다. 제어장치 CU; Control Unit : 프로세스 조작을 지시하는 CPU의 한 부품. 명령어들을 읽고 데이터 처리를 위한 순서를 결정한다. 레지스터 : CPU 안에 있는 매우 빠른 임시기억장치. CPU와 직접 연결되어 있기 때문에 연산 속도가 메모리보다 수십배 수백배 빠르다. CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 레지스터를 거쳐 데이터를 전달함.. 산술논리연산장치 ALU; Arithmetic Logic Unit : 덧셈 뺄셈 같은 두 숫자의 산술 연산과 배타적 논리합, ..

웹 브라우저 www.naver.com 을 입력하면 어떤 일이 일어나는지 모른다면 크게 반성해야 한다. 작년 말, 개발자가 된지 10개월이 되었던 날, 부서장님과 면담을 하는데 웹 브라우저에 url 을 입력하면 어떤 일이 벌어지는지 설명해 줄 수 있냐는 질문을 들었다. 그렇다, 나는 제대로 설명하지 못했다.. 그리고 정말 부끄러웠다. 이렇게 기본적인걸 설명을 못하다니. 1. 사용자가 브라우저에 도메인(www.naver.com)을 입력한다. 2. 사용자가 입력한 url 에서 도메인 부분을 DNS 서버에서 검색한다. DNS 서버에서 도메인에 해당하는 IP주소를 찾아서 사용자가 입력한 url 과 함께 전달된다. 3. 페이지 url 정보와 IP 주소는 HTTP 프로토콜을 사용해 HTTP 요청 메시지를 생성하고 이..
얼핏 보면 비슷한 라이브러리와 프레임워크! 공통점: 개발 속도를 더 빠르게 만들어 줍니다. 둘 다 누군가 미리 작성해 놓은 코드, 우리의 개발 속도를 더 빠르게 만들어 주는 도구다. 차이점: 내가 제어하는가, 제어 당하는가?? -> 누가 누굴 제어하는가?? 라이브러리: 내가 어떤 도구에 대해서 모든 결정을 다 내릴 수 있다. 프레임워크: 누군가 정한 규칙에 따라 도구를 사용하고 있다. 라이브러리는 내가 필요로 할 때 불러서 쓸 수 있고 언제든 다른 라이브러리로 교체할 수 있다. ex) 웹 사이트 화면을 구성하는 라이브러리는 시멘틱UI(Semantic UI), 테일윈드CSS (Tailwind CSS) 등 굉장히 많은데 아무거나 골라서 쓰면 됨! 라이브러리를 교체한다고 해서 프로젝트의 모든 것이 와르르 무너..
컴퓨터가 프로그래밍 언어를 어떻게 받아들일까? 컴퓨터는 프로그래밍 언어를 있는 그대로 받아들이지 못합니다. 컴퓨터는 멍청하기 때문에 0과 1만 받아들일 수 있습니다. 그래서 프로그래밍 언어는 반드시 0과 1로 해석해 주는 과정을 거쳐야 합니다. 번역하는 방법에는 2가지가 있습니다. 방법에 따라 속도가 결정되는 것입니다. 1. 인터프리트 언어 interpreted language : 파이썬, 자바스크립트 비유하자면 동시통역사처럼 해석한다고 생각하면 쉽습니다. 인터프리트 언어는 중간에 동시통역사 역할을 해주는 인터프리터라는게 0과 1을 사용해서 프로그래밍 언어를 실시간으로 번역해 줍니다. 파이썬으로 코드를 작성하면 중간에 인터프리터가 0과 1로 번역하여 컴퓨터에게 전달하는 방식으로 실행되는 것입니다. 2. ..