본문 바로가기

728x90

전체 글

[운영체제] 병행성 /* 병행성 Concurrency*/동시에 실행하는 것 처럼 보여진다. (실제로는 짧은 시간 동안 작업들이 번갈아 가며 실행되는 것처럼 보인다.)병렬성 (Parallelism) 은 실제로 동시에 실행이 된다. 멀티코어에서 멀티 스레드를 동작시킨다.스레드 들은 동시에 메모리에 접근하게 되는데 이를 조정하지 않으면 문제가 될 수 있다. 주요 개념프로세스: 운영체제에서 실행되는 프로그램. 각 프로세스는 독립적인 메모리 공간을 가진다.스레드: 프로세스 내부에서 실행되는 작은 실행 단위. 한 프로세스 내에 여러 스레드가 존재할 수 있으며, 메모리를 공유한다. 스레드 생성시 스택을 생성한다. 즉, 스택은 공유하지 않는다.두 스레드가 하나의 프로세스에서 실행 중이라면 Context Switch를 통해 교체 된다. (.. 더보기
[HTTP] OSI 7계층 /* OSI 7계층 */OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 예시)PC방에서 오버워치를 하는데 연결이 끊겼다. 어디에 문제가 있는지 확인하기 위해서는 모든 PC가 문제가 있다면 라우터의 문제(3계층 네트워크 계층)이거나 광랜을 제공하는 회사의 회선 문제(1계층 물리 계층) 한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면(7계층 어플리케이션 계층) 오버워치 소프트웨어에 문제가 없고, 스위치에 문제가 있으면(2계층 데이터링크 계층) 있다고 판단해 다른 계층에 있는 장비나 소프트웨어를 건들이지 않는것이다. (인용: https://shlee0882.tistory.com/110) .. 더보기
[운영체제] Paging 과 Multi-Level Paging /* Paging */페이징 (Paging)은 base and bound, segmentation과는 달리 address space (virtual memory)를 고정된 크기로 나눈다.한 단위를 page라고 한다.          첫번 째 그림처럼 총 64바이트 4개의 페이지가 있다고 가정하자. (1 페이지당 16바이트). 64바이트를 addressing하려면 6비트가 필요하다.페이지가 4개로 나뉘기 때문에 상위 2비트는 vpn (virtual page number)를 가리키고 나머지는 offset이다.physical address로 addressing 될때 offset은 그대로 가져오고 VPN -> PFN의 과정에서만 변환이 일어난다. paging을 사용하면 메모리를 고정된 크기로 나누어 할당하고 관.. 더보기
[운영체제] 메모리 가상화 - Segmentation /* 메모리 가상화 */메모리 가상화는 모든 프로세스들에게 별도의 가상 주소 공간을 제공해서 각각의 프로세스들은 자기가 전체 메모리를 다 사용하고 있는 것처럼 보이는 환상을 제공한다. 이를 통해 여러 프로그램이 동시에 실행될 때, 각각의 프로그램이 독립적인 메모리 공간을 갖는 것처럼 동작할 수 있다. 프로그램들은 가상 주소 (Virtual Address)를 사용하며, 운영체제와 하드웨어는 이를 물리 주소 (Physical Address)로 변환하여 실제 메모리로 접근한다. 주소 변환 (Address Translation)은 주로 CPU의 MMU (Memory Management Unit)에 의해 수행됩니다./* 세그멘테이션 Segmentation */세그멘테이션은 운영체제에서 메모리 관리를 위해 사용되는.. 더보기
[운영체제] Limited Direct Execution /* Limited Direct Execution */여러 프로그램을 동시에 작동하기 위해서는 CPU 가상화가 필요하다. 이는 Time Sharing 기법으로 구현할 수 있다. CPU 를 가상화를 구현하려면 Performance와 Control을 고려해야 한다. Performance: 오버헤드 없이 구현, Control: CPU에 대한 제어를 유지하면서 프로세스를 효율적으로 실행해야 한다.  Limited Direct Execution 의 절차는 위와 같다.즉 컴퓨터가 부팅되면 CPU는 kernel mode 이므로 trap table을 만들어 예외나 인터럽트가 발생했을 때 하드웨어가 각각의 예외 별로 어떤 코드를 실행할지 그 위치를 알려주게 한다.User Mode에서 Program을 돌릴 때 I/O 작업.. 더보기
[운영체제] 가상화에 대한 간단한 정리 참고하는 책 : 운영체제 아주 쉬운 세 가지 이야기참고 : https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/korean ostep-translations/korean at master · remzi-arpacidusseau/ostep-translationsVarious translations of OSTEP can be found here. Help the cause and contribute! - remzi-arpacidusseau/ostep-translationsgithub.com /* 운영체제의 중요성 */현재는 인턴으로 백엔드 개발자로 생활을 하고 있다. 상사분들과 커피챗을 하면서 백이면 백 내게 조언하는 점은 세 가지이.. 더보기
[Node.js] 이벤트 루프 /* 이벤트 루프 */이벤트 루프는 시스템 커널에서 가능한 작업이 있다면 그 작업을 커널에서 수행한다.자바스크립트는 단인 스레드 기반이지만 Node.js가 논블로킹 I/O 작업을 수행할 수 있도록 해주는 핵심 기능입니다.  각 단계에서는 해당 단계에서 실행되는 작업을 저장하는 큐가 존재한다. /* 타이머 단계 */이벤트 루프는 타이머 단계 (timer phase)에서 시작한다. 타이머 단계의 큐에는 setTimeout이나 setInterval 과 같은 함수를 통해 만들어진 타이머들을 큐에 넣고 실행한다. 타이머들은 min heap 으로 관리 된다. 힙을 구성할 때 기준으로 실행할 시각이 가장 적게 남은 타이머가 힙의 루트가 된다.  ex) 딜레이 값이 100, 200, 300, 400 인 4개의 타이머 .. 더보기
[Node.js] 무엇인가 /* Node.js란 */현재 다니고 있는 회사에서 nodejs 기반 nestjs를 쓰기 때문에 nodejs 를 공부할 필요가 있다고 느꼈다.nodejs 는 Chrome V8 Javascript 엔진으로 빌드 된 Javascript 런타임이라고 노드 공식 사이트에서 소개 된다.노드는 서버를 실행하는 데 제일 많이 사용된다. Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작이 가능하다.  Javascript는 독립적인 언어가 아닌 스크립트 언어이다크르비트 언어는 특정한 프로그램 안에서 동작해서 웹 브라우즈 프로그램 안에서만 동작한다.Nodejs는 Javascrip.. 더보기

728x90