일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- BFS
- 프론트엔드개발자
- 부트캠프
- github
- Javascript
- js
- computerscience
- 너비우선탐색
- 호이스팅
- KAKAO
- 패스트캠퍼스
- CS
- LinkSnap
- git
- 백준
- 코딩테스트
- DFS
- nodejs
- 알고리즘
- 컴퓨터과학
- 자바스크립트
- 코테
- 국비지원
- 국비지원취업
- html/css/js
- 컴퓨터공학
- cpu
- 그리디
- CSS
- 야놀자
- Today
- Total
목록CS (19)
My Boundary As Much As I Experienced
이미 한 번 변수 호이스팅에 대해 다뤄본 적이 있지만 자바스크립트 스터디에서 심화적으로 다뤄보기로 했다. 1. 변수 호이스팅이란? 자바스크립트에서 호이스팅(Hoisting)은 변수 선언과 함수 선언을 코드의 맨 위로 끌어올려지는 현상을 일컫는다. 그래서 개발자가 어느 라인 위치에 코드를 선언해도, 실행 되기전 코드가 최상단으로 끌어올려지고 실행되게 된다. 2. var 변수 호이스팅의 특성 var 키워드로 변수를 선언하면 변수 호이스팅에 의해 변수 선언문이 스코프의 선두로 끌어 올려진 것처럼 동작한다. 즉, 변수 호이스팅에 의해 var 키워드로 선언한 변수는 변수 선언문 이전에 참조할 수 있다. 단 할당문 이전에 변수를 참조하면 언제나 undefined를 반환한다. 3. 호이스팅의 원인 (실행 컨텍스트) ..
페이지 부재 (Page Fault) CPU가 접근하려는 페이지가 메모리에 없는 상황이다. 페이지 부재 발생 시 페이지를 디스크에서 읽어봐야 하는데 이 과정에서 막대한 오버헤드가 발생한다. 필요한 페이지가 메모리에 없을 때 page-falut가 발생하고 Backing Store(보조 메모리)에서 해당 페이지를 찾아 빈 프레임에 로딩해야 하는데, 이때 빈 프레임이 없을 경우 희생 당할 프레임(victim frame)을 고르는 알고리즘이 페이지 교체 알고리즘이다. 페이지 교체 알고리즘은 page-fault 발생 비율을 줄이는 것을 목표로 한다. 페이지 교체 (Page Replacement) 페이지 부재가 발생하면 요청된 페이지를 디스크에서 메모리로 읽어와야하는데, 물리적 메모리에 빈 프레임이 존재하지 않을 수..
가상 메모리 (Virtual Mememory) 실제 메모리 크기와 관계 없이 메모리를 사용할 수 있도록 가상 메모리 주소를 사용하는 것 프로세스의 일부분만 메모리에 로드하고 나머지는 보조 기억 장치 (가상 메모리 공간) 에 둔다 Memory Fragmentation 어떠한 프로그램을 실행할 때, 컴퓨터에서는 프로그램들을 메모리 공간에 연속적으로 할당하게 됩니다. 만약 여러 프로그램들이 메모리에 할당되고 해제되는 것이 반복되다 보면 메모리 공간이 조각조각 나뉘게 되어 총메모리가 충분함에도 불구하고 프로그램에 메모리를 할당하는 것이 불가능한 상태가 발생하게 됩니다. 이러한 현상을 바로 메모리 단편화라고 하며, 이번 포스팅은 메모리 단편화 해결방법인 페이징과 세그멘테이션에 대해 알아보도록 하겠습니다. Memo..
세마포어 : 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법 공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이때 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둬야 한다. 이를 위해 나온 것이 바로 '세마포어' 임계 구역 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분 세마포어 P, V 연산 P : 임계 구역 들어가기 전에 수행 ( 프로세스 진입 여부를 자원의 개수(S)를 통해 결정) V : 임계 구역에서 나올 때 수행 ( 자원 반납 알림, 대기 중인 프로세스를 깨우는 신호 ) // P(S); procedure P(S) --> 최초 S값은 1임 while S=0 do wait -..
여러 프로세스가 하나의 공유 자원에 접근하려 할 때 발생하는 문제이다. 데이터의 최종 상태는 마지막에 접근한 프로세스에 따라 달라진다고 한다. 이런 문제 때문에 상호 배제(Mutual Exclusion)이 필요하다. 컴퓨터 시스템에서 데이터 연산의 순서는 이렇다. 연산할 데이터를 저장 공간에서 가져온다. -> 연산한다. -> 연산한 결과를 저장 공간에 반영한다. 그런데 여러 실행 주체가 1개의 공통 데이터를 수정할 때 예상치 못한 경쟁 상태가 발생하는 것이다. count++와 count--가 서로 참조해서 예상치 못한 값을 나오게 하는 예시. 경쟁 상태가 일어나는 경우 커널 작업을 수행하는 중에 인터럽트 발생 문제점 : 커널모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조..
동기식 (Synchronous) 먼저 시작된 작업이 끝날 때까지 다른 작업을 시작하지 않고 기다렸다가 다 끝나면 새로운 작업을 시작하는 방식이다. 직렬로 배치. 작업 실행의 순서가 확실히 정해져 있다. 비동기식 (Asynchronous) 동기식 방식과는 다르게 먼저 시작된 작업이 끝나든 안 끝나든 새로운 작업을 시작하는 방식이다. 위 그림 Asynchronous와 같이 작업이 병렬로 배치되어 실행되며 작업 완료 순서가 확실하지 않다. 나중에 시작된 작업이 먼저 끝나는 경우도 발생. DOM Element 의 이벤트 이벤트 핸들러 마우스, 키보드 입력 (click, keydown 등), 페이지 로딩 (DOMContentLoaded 등) 타이머 타이머 API (setTimeout 등), 애니메이션 API (r..
교착 상태(膠着狀態) 또는 데드락(deadlock)은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태이다. 주로 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하는 상황 발생 한 프로세스가 자원을 요청했을 때, 동시에 그 자원을 사용할 수 없는 상황이 발생할 수 있음. 이때 프로세스는 대기 상태로 들어감 대기 상태로 들어간 프로세스들이 실행 상태로 변경될 수 없을 때 '교착 상태' 발생 데드락(DeadLock) 발생 조건 상호 배제(Mutual exclusion)자원은 한번에 한 프로세스만 사용할 수 있음 점유 대기(Hold and wait)최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원..
스케줄링 CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다. 비선점 한 프로세스가 CPU를 할당받아 실행중이라면 다른 프로세스들이 CPU를 강제적으로 뺏을 수 없는 스케줄링 방식 FCFS (First Come First Served) : 자료구조 큐의 데이터 처리 큐에 도착한 순서대로 CPU 할당 SJF (Shortest Job First) : 우선순위 큐의 데이터 처리(최소 시간) 수행시간이 가장 짧다고 판단되는 작업을 먼저 수행(FCFS 보다 평균 대기 시간 감소, 짧은 작업에 유리) HRN (Hightest Response-ratio Next) : 우선순위 큐의 데이..
IPC(Inter Process Communication) 프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다. 프로세스는 독립적으로 실행된다. 즉, 독립 되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다. (스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다) 이런 독립적 구조를 가진 프로세스 간의 통신을 해야 하는 상황이 있을 것이다. 이를 가능하도록 해주는 것이 바로 IPC 통신이다. 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 된다. 커널이란? 커널은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어..
Process Management CPU가 프로세스가 여러개일 때, CPU 스케줄링을 통해 관리하는 것을 말함 PCB(Process Control Block) 프로세스들의 메타데이터를 저장하는 곳. PCB(Process Control Block)는 특정 프로세스에 대한 정보를 담고 있는 자료구조입니다. 운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리/제어합니다. 프로그램이 실행되어 메모리에 적재됐을 때 프로세스가 생겨나고, 프로세스 주소 공간에 코드&데이터&스택 공간이 생성됩니다. 이후 해당 프로세스의 메타데이터들이 PCB 에 저장된다. (Linked List 방식으로 관리함) 프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 → 이 프로세스의 메타..