일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 국비지원취업
- 국비지원
- html/css/js
- js
- 프론트엔드개발자
- CS
- CSS
- computerscience
- 부트캠프
- nodejs
- 알고리즘
- DFS
- 패스트캠퍼스
- 코딩테스트
- 야놀자
- Javascript
- KAKAO
- 코테
- cpu
- 그리디
- 너비우선탐색
- LinkSnap
- 컴퓨터공학
- 호이스팅
- 컴퓨터과학
- 자바스크립트
- git
- Today
- Total
목록Computer Basics (33)
My Boundary As Much As I Experienced
클린코드 클린코드란, 가독성이 높은 코드를 말한다. 리팩토링 프로그램의 외부 동작은 그대로 둔 채, 내부의 코드를 정리하면서 개선하는 것을 말함 보통 코드를 유지보수하면서 동시에 클린 코드로 전환하는 것 모두 리팩토링에 해당된다. 리팩토링이 필요한 코드는? 중복 코드 긴 메소드 거대한 클래스 Switch 문 절차지향으로 구현한 코드 리팩토링 예제 1. 범용적인 이름을 쓰지않고 구체적인 이름을 쓴다. // 수정 전 public int getFoodPrice(int arg1, int arg2) { return arg1 * arg2; } // 수정 후 public int getTotalFoodPrice(int price, int quantity) { return price * quantity; } 2. 중복 ..
파일 시스템 - 컴퓨터에서 파일이나 자료를 쉽게 발견 할 수 있도록, 유지, 관리하는 방법이다. 즉, 저장매체에는 많은 파일이 있으므로, 이러한 파일을 관리하는 방법을 말한다. - 사용자 영역이 아닌 커널 영역에서 동작 - 파일을 빠르게 읽기, 쓰기, 삭제 등 기본적인 기능을 원활히 수행하기 위한 목적 파일 시스템 특징 - 계층적 디렉터리 구조를 가진다. - 디스크 파티션 별로 하나씩 둘 수 있다. 파일 시스템의 역할 - 파일관리 : 파일 저장, 참조, 공유 - 보조 저장소 관리 : 저장 공간 할당 - 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미 - 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공 파일 시스템 개발 목적 - HDD와 메인 메모리 속도차 줄이기 - 파일 관리..
CPU Register 레지스터는 컴퓨터에서 가장 빠른 메모리로 CPU 내부에 존재한다. 레지스터에 데이터를 읽고 쓰는 것은 0~1 CPU 사이클이 필요하므로 약 0ns ~ 0.25ns의 지연 시간(latency)이 생긴다. 레지스터의 크기는 CPU가 32비트냐 64비트냐에 따라 다른데 요즘엔 거의 64비트 CPU를 사용하므로 레지스터 하나는 8바이트이다. 캐시 메모리 주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치 CPU와 주기억장치의 속도 차이로 성능 저하를 방지하기 위한 방법 CPU가 이미 봤던걸 다시 재접근할 때, 메모리 참조 및 인출 과정에 대한 비용을 줄이기 위해 캐시에 저장해둔 데이터를 활용한다 캐시는 플리플롭 소자로 구성되어 SRAM으로 되어있어서 DRAM보다 빠른 장점을 지님..
페이지 부재 (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) : 우선순위 큐의 데이..