분류 전체보기502 32. 가상메모리 - 다중 단계 페이징 시스템 1. 다중단계 페이징 시스템이란? - 페이지를 4kb 단위로 설정하면, 이를 보관하는 Page table의 범위도 그만큼 넓어지게 된다. - 리눅스를 예로 들어보자면, 4GB의 메모리 영역을 갖는 프로세스에서 0~3GB의 영역이 응용 프로그램이 갖는 영역이다. - 그러나 프로세스 당 실제 실행 코드의 크기는 커봤자 10kb 정도일 것이다. 그러면 나머지 약 3GB의 영역은 사용하지 않는 비효율적인 영역이 되는데, 이만큼의 메모리 영역이 page table에도 올라가게 된다. ▶ 4kb(= 32bit)의 페이지에서 하위 12bit는 오프셋(=변위)을, 상위 20bit는 페이지 번호를 담당한다. ▶ 상위 20bit는 2의 20승으로 총 1048576개의 페이지 정보를 필요로 한다. - 이러한 메모리의 누수를.. 2021. 7. 8. 31. 가상메모리 - 페이징 시스템 - 이번 포스팅에서는 가상 메모리 시스템을 만들 때 가장 많이 사용되는 페이징 시스템에 대해서 알아보자. 1. 페이징 시스템의 이해 a) 페이징 시스템이란? - 고정된 크기의 단위인 페이지를 기준으로 가상 주소 공간과 이에 해당하는 물리 주소 공간을 관리하는 것. - 하드웨어의 지원을 필요로 한다. ex) Intel x86(32bit)의 경우, 페이징 처리 단위를 4KB, 2MB, 1GB로 지원 ex) 리눅스의 경우, 4KB 페이징 처리 단위를 지원 ex) 4KB단위로 페이징 처리를 한다는 것은 프로세스의 주소 영역(4GB)을 4KB단위로 나누는 것 - 페이지 번호를 기반으로 가상/물리 주소 매핑 정보를 기록 및 사용 b) 페이징 시스템의 작동방식 예제 - 프로세스(4GB)의 PCB(Process Con.. 2021. 7. 6. 30. 가상메모리(Virtual Memory System) - 개념 1. 개요 - 이전 포스팅까지 프로세스와 스레드에 대해 알아보면서 가상메모리를 언급한 바 있다. - 해당 내용은 다음과 같다. ▶ 리눅스의 경우, 프로세스 하나 당 4GB의 크기를 갖는다. ▶ 그렇다면 컴퓨터 메모리가 8GB인 경우, 한번에 두개의 프로세스밖에 처리하지 못한다는 것을 의미한다. ▶ 하지만, 실제로 컴퓨터를 사용해보면 여러가지 프로세스를 8GB 메모리로 충분히 처리할 수 있다. ▶ 이 부분이 가능한 이유는 가상 메모리와 가상메모리를 활용하는 다양한 스케줄링 기법 때문이다. https://devraphy.tistory.com/171?category=988503 18. 프로세스 - IPC의 개념 1. IPC(Inter-Process Communication) 배경지식 - 운영체제에서 프로세스 .. 2021. 7. 6. 29. 스레드(Thread) - 교착(Deadlock)과 기아(Starvation)상태 1. 개요 - 스레드 동기화 문제를 해결하기 위해서, 임계영역에 접근하는 순서를 프로그래밍한다. - 잘못된 로직을 작성하면 모든 스레드가 대기상태에 걸리거나, 특정 스레드가 아예 접근 기회를 얻지 못하게 된다. - 교착 상태와 기아 상태의 형태는 이론적으로 존재하지만, 특정한 해결 방안은 존재하지 않는다. - 그 이유는 프로그램 구조에 따라 해결방법이 천차만별 다르기 때문이다. - 그러므로, 본 포스팅에서는 Deadlock과 Starvation의 개념과 원인에 대해 작성한다. 2. Deadlock(교착 상태) - Deadlock은 무한 대기 상태를 의미한다. - 즉, 대기중인 두개 이상의 스레드가 서로의 작업이 완료되기를 기다리는 상황을 의미한다. [Thread A] a = "임계자원" lock.acqu.. 2021. 7. 5. 28. 스레드(Thread) - 세마포어(Semaphore) - 이전 포스팅에서 동기화 이슈에 관해 그 문제점과 해결책에 대해서 알아보았다. - 이번 포스팅에서는 동기화 이슈에 관련된 내용을 간략하게 정리하고 전반적인 해결방법에 대해 알아보자. 1. 동기화(Synchronization) 이슈란? - 여러 스레드가 동일한 자원(데이터)에 접근하여 동시 수정을 하는 경우 발생하는 문제 - 연산 누락, 변수값의 변경 등 계산 결과에 오류를 만든다. * 알고 가자!!! - 동기화 문제는 다중 쓰레드, 다중 프로세스 사용 시 발생하는 문제이다. - 아래의 설명에 나온 해결방안이 꼭 다중 쓰레드를 대상으로만 사용되는 것은 아니다. - 다중 프로세스 사용 시 동기화 문제를 해결하는 방법이기도 하다. 2. 동기화 이슈의 해결방법 - 비동기(= 순차적) 작업처리 - 즉, 스레드 .. 2021. 7. 5. Vue3 - 영화 검색 사이트 코드분석 - 본 포스팅은 아래의 프로젝트를 기반으로 다뤄진 내용입니다. https://devraphy.tistory.com/235 Vue3 - 영화 검색 사이트 1. 개요 - Vue 공부를 위한 클론 코딩 - 본 프로젝트는 패스트캠퍼스의 프론트엔드 초격차 패키지의 Vue 파트 강의 내용을 따라 만든 것입니다. 2. 사이트 소개 https://silly-banach-bd5250.netlify.app/#/ Hell.. devraphy.tistory.com 1. 개요 - 본 프로젝트는 Vue3 강의에서 진행한 내용을 그대로 클론코딩한 프로젝트이다. - 강의내용을 따라서 프로젝트를 만들다 보니, 코드와 데이터 흐름에 대한 이해가 부족함을 느꼈다. - 이와 같은 이유로 해당 프로젝트의 핵심 기능을 분석해보려고 한다. 2... 2021. 6. 30. 7. webpack에 대한 이해(사용목적, 기본개념) - Vue 프로젝트 클론코딩을 완료한 이후, Vue와 webpack에 대한 기본적인 개념적 이해가 궁금했다. - 그러므로 본 포스팅에서 webpack을 왜 사용하는지와 webpack의 기본구조에 대한 이야기를 해보려고 한다. 1. webpack을 사용하는 이유 프론트 개발의 영역이 넓어지면서 JavaScript를 이용한 다양한 기술적 풀이가 생겨났다. 하나의 웹 페이지에 연결된 JS파일이 많아지면서 관리에 있어 한계가 발생했고, 웹사이트의 로딩속도가 길어지고 그만큼 더 많은 요청이 발생하여 네트워크 비용이 증가했다. 더불어, JS파일이 많아지면서 서로의 scope를 침범하여 변수간의 충돌을 일으킬 위험성이 증가했다. 이를 해결하기 위해, JS의 즉시호출함수(IIFE) 기능을 이용한 CommonJS, AM.. 2021. 6. 25. 42. Vue - 포트 수정 및 배포 - 본 포스팅은 이전 포스팅과 이어지는 내용임을 알려드립니다. 1. 개요 - 지금까지 Netlify를 이용하여 프로젝트를 관리하고 배포하는 설정을 했다. - 마지막으로 설정해야 하는 부분이 있다면 포트번호를 수정하는 일이다. 2. 명령어(스크립트) 변경 - 위의 사진은 package.json의 일부분이다. - 현재 Netlify의 serverless 함수를 사용하기 위해 개발환경으로 프로젝트를 빌드를 할때 다음과 같은 명령어를 사용한다. - npm run dev:netlify - webpack 서버를 이용하는 개발환경 빌드는 더이상 사용하지 않기 때문에 이 부분을 변경시켜주고 - netlify 서버를 이용한 개발환경 빌드 명령문을 기본 개발환경 명령어로 변경한다. 3. netlify.toml 수정 - 조.. 2021. 6. 24. 41. Vue - 로컬 및 서버의 환경변수 구성 - 본 포스팅은 이전 포스팅에서 사용한 프로젝트와 이어지는 내용입니다. 1. 개요 - 이전 포스팅에서 Netlify serverless 함수를 사용하여 중요한 API key가 사용자측 브라우저에 노출되는 것을 막는 방법을 알아 보았다. - 해당 프로젝트는 git이라는 공개 플랫폼에 소스코드가 공유되어 있다. - 이 경우, 소스코드를 통해서 API key가 노출되는 문제점이 발생한다. - 이를 해결하기 위해 환경변수라는 것을 이용하여 API key를 감추는 방법을 알아보자. 2. 환경변수 설정 - 환경변수를 사용하기 위해서는 하나의 패키지를 설치해야한다. 터미널 입력: npm i -D dotenv-webpack a) webpack.config.js - 새로운 패키지를 설치했으니 환경구성을 해줘야 한다. -.. 2021. 6. 24. 이전 1 ··· 31 32 33 34 35 36 37 ··· 56 다음