목록개발공부/CS스터디 (12)
개발자 도전기

동기와 비동기 / Blocking과 Non-Blocking 동기와 비동기는 작업을 순차적으로 진행할 것인지, 아닌지를 말한다.예를 들어 카페에서 이전 손님이 음료를 주문하고, 주문한 음료를 받은 후에야 다른 손님이 음료를 주문할 수 있는 것은 동기 방식, 주문 후에 음료가 빨리 제조되는 순서대로 받을 수 있는 것을 비동기 방식이라고 한다. Blocking과 Non-Blocking은 다른 작업과 함께 실행될 수 있는지, 아니면 작업이 끝날 때까지 block되는지를 말합니다Non-Blocking 방식에서는 FILE1, 2 작업이 동시에 실행될 수 있습니다 자바스크립트는 여러 함수는 비동기 처리가 가능합니다. 다음의 코드를 실행시켜 보면,코드가 순차적으로 실행되지 않고 처리 속도가 빠른 순서대로 실행되었습..

OSI 7계층이란?OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다 네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층이라면, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 계층입니다 OSI 7 계층을 나누는 이유?통신이 일어나는 과정을 단계별로 파악할 수 있다흐름을 한 눈에 알아보기 쉽다특정 계층에 문제가 생기면 다른 계층은 수정할 필요 없이 해당 계층만 수리하면 된다 1계층 - 물리계층(Physical Layer)전기적 신호로 데이터를 전송하는 계층통신 단위는 비트이며 1과 0으로 나타난다이 계층에서는 단지 데이터를 전달하기만 할 뿐 데이터를 검증하지 않습니다대표적인 장비로는 통신 케이블, 리피터, 허브 등이 있습니다리피터케이블이 길어질수록 신호가 약해지..

지난주에는 가상 메모리의 구현 방식 중 하나인 가변 분할 방식 중 페이징에 대해서 알아보았습니다. 오늘은 또다른 가변 분할 방식인 세그먼테이션과, 세그먼테이션-페이징 혼용 기법에 대해 알아봅시다 세그먼테이션이란? 프로세스를 논리적 단위(세그먼트)로 나눠서 메모리에 배치하는 것을 말한다 각 세그먼트의 크기는 일정하지 않다 세그먼트가 물리 메모리에 저장된 위치를 저장한 세그먼트 테이블을 가진다 세그먼트 테이블은 시작 주소(base)와 세그먼트 크기(limit)을 엔트리로 갖는다 시작 주소(base) : 세그먼트가 물리 메모리에 저장된 시작 지점을 나타낸다 세그먼트 크기(limit) : 세그먼트의 크기이며 세그먼트가 물리 메모리에 저장된 마지막 지점이다 세그먼테이션 기법의 주소 변환 세그먼테이션 기법에서는 가..

지난 시간에 페이징과 세그멘테이션은 불연속 할당 방식으로 가상메모리를 구현한 메모리 할당 방식이라는 것을 배웠다. 간단히 개념만 짚고 넘어갔던 부분을 좀 더 자세히 알아보자 페이징 페이징은 물리 메모리에 외부 단편화가 생기지 않도록 나눈 후 같은 크기로 가상 메모리를 나눈다. 이는 메모리의 효율적 관리를 위해서이다. Page(페이지) : 가상 메모리를 일정한 크기로 나눈 블록 Frame(프레임) : 물리 메모리를 일정한 크기로 나눈 블록 페이지 크기 = 프레임 크기 이렇게 나눈 프로세스의 페이지들은 물리적 메모리의 조각인 프레임에 불연속적으로 할당된다 불연속 할당이란? 하나의 프로세스가 통째로 연속되어서 메모리에 할당되는 것이 아니라 어떠한 단위로 쪼개져서 연속되지 않고 할당되는 것을 말함 이때, 페이지..

가상메모리란? 운영 체제에서 제공하는 메모리 관리 기술 중 하나로 물리메모리(RAM)와 가상주소공간간의 매핑을 관리하는 시스템으로 보조 기억 장치(디스크)를 메모리처럼 사용하는 방식 가상메모리의 이해 사용자는 동시에 여러 프로그램을 사용하게 되고 그 프로그램의 크기는 메모리의 용량을 넘어서기도 한다. 그럼에도 우리가 무리없이 여러 프로그램을 실행할 수 있는 것은 여러 프로그램의 메모리 할당이 물리메모리(RAM)가 아닌 가상메모리에 할당되기 때문이다. 가상메모리에 할당된 가상 주소는 MMU를 통해 물리 주소로 변환되고 물리 메모리에 할당된다. 물리 메모리에 할당되지 않은 영역은 디스크에 SWAP 됨으로써 실제 메모리보다 큰 가상 주소 공간을 제공한다 논리 주소와 물리 주소 논리 주소란 프로그램 실행 중 C..
✅ 프로세스 동기화란? 다중 프로세스 환경에서 프로세스 간의 상호작용을 조정하는 메커니즘으로 여러 프로세스가 공유 자원에 접근할 때 일관성과 안정성을 보장하고 프로세스 간의 순서와 시간을 조절한다. 👉 동기화의 종류 ○ 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하는 것 ex ) reader writer problem 리더와 라이터 간의 충돌이 발생해서는 안 된다. ○ 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 ex ) Bank account problem A 카드사와 B 카드사가 동시에 계좌에 접근하려고 할 때 문제가 생길 수 있다. ✅ 공유 자원과 임계 구역 ○ 공유자원 : 여러 프로세스가 공유하는 자원 (전역 변수, 입출력장치, 보조기억장치) ○ 임계 구..

🚩시간복잡도란? 알고리즘의 성능을 표기하기 위해 사용한다. '완료까지 걸리는 절차의 수'라고 생각하면 된다 완료까지 N단계가 걸리는 알고리즘의 시간복잡도는 O(N)이다. 가장 시간복잡도가 낮은 알고리즘을 선택하여 사용한다 🚩 점근적 분석 시간 복잡도에서 중요하게 보는 것은 가장 큰 영향을 미치는 n의 단위이다 임의의 함수가 N -> 무한대 일 때 어떤 함수 형태에 근접해지는지 분석 -상수는 무시된다 n + 20 => n -계수는 무시된다 2n => n -가장 큰 차수를 제외한 차수는 제외된다 2n^2 + 3n => n^2 🚩 점근적 표기법 점근적 분석을 통해 실행시간을 단순하게 표현 이 때 점근적 표기법으로 표현함 Ω (lower bound) : 최소 실행 시간 O (upper bound) : 최대 실행..
프로그래밍 패러다임 -명령형 프로그래밍 : 절차 지향 프로그래밍, 객체 지향 프로그래밍 -선언형 프로그래밍 : 함수형 프로그래밍, 논리형 프로그래밍 명령형 프로그래밍과 선언형 프로그래밍의 차이 명령형 프로그래밍은 어떤 작업을 수행하기 위해 명령을 지시하는 방식으로 설계된다. 그 과정에서 변수의 값을 변경하거나 상태를 변화시키는 등의 부작용이 일어날 수 있다. // 1~10 까지의 값이 i에 할당된다 for (int i = 0; i < 10; i++) { System.out.println(i); } 선언형 프로그래밍은 무엇을 수행해야 하는지 보다는 무엇을 달성해야 하는지 설명하는데 중점을 둔다 List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Li..

캐시 메모리란? 연산 작업을 하는 CPU는 메모리에서 데이터를 불러온다. 하지만 CPU의 처리 속도는 빠르고 메모리의 처리 속도는 느리기 때문에 빠른 CPU의 일처리 속도를 메모리가 따라가지 못해서 문제(병목 현상)이 생긴다. 이를 해결하기 위한 것이 캐시 메모리이다. 캐시 메모리는 CPU와 메모리 사이에 위치하고 있다고 생각하면 된다. 캐시 메모리는 CPU가 메모리에 접근하는 횟수를 줄여 성능을 향상시킨다. 일반적으로 CPU에 캐시 메모리는 2~3개 정도 사용된다. 각각 L1, L2, L3로 구분된다. 숫자가 많아질 수록 더 느려지고 용량이 커진다. Cache Hit, Miss 캐시 메모리의 성능을 평가할 수 있는 방법 중 하나로 Cache Hit ratio가 있다. CPU가 캐시 메모리에 접근했을 때..