loading
미야옹

[WEB] 인증과 인가: 쿠키, 세션, 토큰(JWT) 정리

·
CS/Web
1. 인증과 인가웹 서비스의 보안을 위해서는 이 두 가지 과정이 모두 구현돼야 한다.인증: 로그인을 통해 회원임을 확인인가: 해당 게시글의 작성자가 본인이 맞는지 확인 후 삭제 권한 부여1.1 인증 (Authentication)사용자가 누구인지 확인하는 과정 (누구인지“인” 증하는 것)e.g., 로그인 (아이디/비밀번호 입력하여 회원임을 식별) 인증 구현 방식은 크게 두 가지로 나뉜다.세션 방식: 세션 객체를 통해 인증을 처리하는 방식토큰 방식: 토큰을 이용해 인증을 처리하는 방식구분 세션 방식 토큰 방식인증 처리 방식서버에 저장된 세션 객체로 인증클라이언트가 보유한 토큰으로 인증장점세션 객체를 이용해,서버에서 사용자 상태를 직접 관리할 수 있음서버가 DB를 매번 조회할 필요 없음 (Stateless)단..

[Web] 브라우저 렌더링 과정 정리 (Critical Rendering Path) 작성중

·
CS/Web
브라우저는 HTML·CSS·JavaScript로 구성된 웹 페이지를 여러 단계의 과정을 거쳐 화면에 렌더링한다.이 전체 렌더링 과정을 Critical Rendering Path(CRP)라고 부른다.CRP는 아래 단계로 구성된다.1. DOM & CSSOM 생성1.1 HTML → DOM 변환브라우저는 HTML 문서를 파싱해 DOM(Document Object Model) 트리를 만든다.DOM은 HTML 요소를 트리 형태의 객체 모델로 표현한 구조다.1.2 CSS → CSSOM 변환외부 CSS 파일, `` 태그, 인라인 스타일 등을 파싱해 CSSOM(CSS Object Model)을 생성한다.즉, CSSOM은 CSS를 브라우저가 이해하기 쉬운 구조로 재구성한 트리다.2. Render Tree 생성브라우저는 D..

[Network] #8 허브와 스위치

·
CS/Network
컴퓨터 네트워킹: 하향식 접근 (제8판), 혼자 공부하는 네트워크를 바탕으로 정리한 글입니다. 1. 물리계층과 데이터 링크 계층의 장비1.1 허브 vs 스위치허브와 스위치는 각각 물리 계층, 데이터 링크 계층의 대표적인 네트워크 장비이다.허브와 스위치는 대비되는 특성을 갖고 있다.허브는 반이중 통신, 스위치는 전이중 통신 방식으로 통신을 한다.허브는 스위치와 달리 충돌이라고 하는 문제를 완화하기 위한 방식이 필요한데 이 방법으로 CSMA/CD라고 하는 방식을 사용한다.오늘날에는 대부분 스위치를 사용한다.1.2 리피터허브 외에 물리계층의 대표적인 장비로써 리피터(repeater)가 존재한다.전기 신호가 감소하거나 왜곡되는 것을 방지하기 위해 전기 신호를 증폭시켜 주는 장비이다.리피터는 물리 계층의 장비이므..

[Network] #7 NIC와 케이블

·
CS/Network
컴퓨터 네트워킹: 하향식 접근 (제8판), 혼자 공부하는 네트워크를 바탕으로 정리한 글입니다. 1. NIC (Network Interface Controller)1.1 NIC란?NIC란 호스트를 통신 매체(케이블, 무선 등)에 연결 짓는 인터페이스 역할을 하는 장비로,호스트가 네트워크(LAN)를 통해 다른 장치와 통신할 수 있도록 해준다.NIC는 통신 매체 신호와 컴퓨터가 이해하는 정보를 상호 변환한다.통신 매체에 흐르는 신호(빛, 전기 등)를 호스트가 이해할 수 있는 정보로 변환하거나, 호스트가 이해할 수 있는 디지털 기반의 정보를(빛, 전기) 등 다양한 유무선의 통신 매체 신호로 변환할 수 있다.즉, 호스트와 통신 매체의 중간 다리 역할을 하는 네트워크 장비이다.NIC만 있으면 네트워크를 이용할 수 ..

[Network] #6 이더넷 (Ethernet)

·
CS/Network
컴퓨터 네트워킹: 하향식 접근 (제8판), 혼자 공부하는 네트워크를 바탕으로 정리한 글입니다. 1. 이더넷(Ethernet)아래는 컴퓨터 설정에서 네트워크 및 인터넷을 클릭했을 때 나오는 화면이다.인터넷도 아니고 이더넷이 뭘까? 알아보자.거리 통신망(LAN, Local Area Network)에서 데이터를 전송하기 위한 기술 표준으로,유선 LAN에서 가장 널리 사용되는 통신 기술이다.인터넷이 글로벌 네트워킹에 대한 것이라면, 이더넷은 근거리 네트워킹에 대한 것이다.다양한 통신 매체의 규격, 송수신되는 프레임의 형태, 프레임을 주고받는 방법 등이 정의되어있다.물리 계층에서 사용되는 케이블은 이더넷 규격을 따르며, 데이터 링크 계층에서 주고받는 프레임은 이더넷 프레임의 형식을 따른다.이것이 물리 계층와 데이..

[Network #5] 트래픽과 네트워크 성능 지표

·
CS/Network
컴퓨터 네트워킹: 하향식 접근 (제8판), 혼자 공부하는 네트워크를 바탕으로 정리한 글입니다. 1. 트래픽(traffic)1.1 트래픽이란?트래픽은 네트워크 내의 정보량을 의미한다.트래픽은 주로 노드에서 측정이 되기 때문에, 트래픽은 "특정 시점에 노드를 경유하는 정보량"으로 사용되는 경우가 많다.e.g., 도로 위 자동차의 수1.2 과도한 트래픽의 문제과도한 트래픽은 과부하(성능 저하)의 문제를 야기한다.네트워크 내의 성능은 처리율, 대역폭, 패킷 손실등으로 판단한다.2. 네트워크 성능의 판단2.1 처리율(throughput)처리율은 단위 시간당 네트워크를 통해 실제로 전송되는 정보량을 의미한다.네트워크 성능을 평가하는 중요한 지표로, 전송 속도가 빠를수록 처리율이 높아진다.표현 단위bps(bit/s)..

[OS #26] Main Memory

·
CS/OS
1. Main Memory1.1 개요프로세스는 실행 중인 프로그램을 말하는데, 여기서 "실행 중"이라는 말은 메인 메모리에 올라갔다는 뜻이다.메모리 상단에는 OS(커널)가 존재하고 나머지 프로세스가 자신들의 메모리 공간을 사용하고 있다. 어떻게 서로의 메모리 공간을 침범하지 않고 보장해줄 수 있을까?독립적인 메모리 공간을 위해 base register(기준 레지스터), limit register (한계 레지스터) 가 필요하다!CPU가 base보다 크고, base + limit보다 작은 범위 내의 주소에만 접근할 수 있도록 한다.base register: 프로세스의 물리적 메모리의 시작 주소를 가지고 있다.limit register: 현재 CPU에서 수행중인 프로세스의 논리적 주소의 최대값, 프로세스의 크..

[OS #25] Deadlocks

·
CS/OS
1. Deadlocks개념교착상태두 개 이상의 프로세스가 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에, 무한 대기 상태에 빠지는 상태한정된 자원을 프로세스가 사용하려고 할 때 발생한다. 프로세스는 아래와 같은 순서로만 자원을 사용할 수 있다.Request (요청)Use (사용)Release (방출)2. 데드락 발생조건⭐⭐(4가지 조건을 동시에 충족해야 발생)2.1 상호 배제한 번에 프로세스 하나만 해당 자원을 사용할 수 있다.다른 프로세스가 그 자원을 사용하려 할 경우, 그 프로세스는 자원의 사용이 끝날 때까지 지연되어야 한다.2.2 점유 대기프로세스가 최소한 한 개의 자원은 점유해야 하고, 점유한 자원을 얻기 위해 대기하는 프로세스가 존재해야 한다.아래 그림에서 볼 수 있듯, P₀ 이 R₀를..

[OS #24] 프로세스 동기화

·
CS/OS
전 포스팅 《 IPC (프로세스간 통신) 》에서 임계 구역에 대해 살펴보았다.이 포스팅에서 설명 하려는 것은 아래와 같다."경쟁 상태는 문제이다. 왜? 데이터의 일관성을 보장할 수 없기 때문이다. 그럼 어떻게 해결할건데?" → 프로세스 동기화!프로세스 동기화란 하나의 자원을 한 순간에 하나의 프로세스만이 이용하도록 제어하는 것이다.경쟁 상태가 무엇인지 먼저 살펴보자!1. 경쟁상태와 임계구역공유된 자원에 여러 프로세스/스레드가 동시에 접근하려고 하면 임계 구역 안에서 경쟁 상태가 생길 수 있다.경쟁상태(race condition) : 두 개 이상의 프로세스가 공유 자원을 가지고 경쟁하는 상태임계구역(Critical Section (CS)) : 공유 자원 접근 순서에 따라 실행 결과가 달라지는 영역, 공유 ..

[OS #23] Thread 스케줄링, 다중 프로세서 스케줄링

·
CS/OS
1. Thread 스케줄링1.1 쓰레드쓰레드는 유저 레벨과 커널 레벨로 구분한다.시스템에서 쓰레드를 지원할 경우, 프로세스가 아닌 쓰레드를 스케줄링한다.1.2 쓰레드 스케줄링 경쟁 범위PCS와 SCS는 프로세스가 경쟁하는 범위의 차이로 구분한다.PCS (Process-Contention Scope)프로세스 내에서 쓰레드끼리 경쟁한다.SCS (System-Contention Scope)전체 시스템 내에서 쓰레드끼리 경쟁한다.2. 다중 프로세서 스케줄링2.1 다중 프로세서 스케줄링의 종류비대칭 다중처리master 프로세서 혼자 모든 자료구조를 관리한다. (병목현상이 발생)master 프로세서(대장)가 죽으면 다 죽음!!!대칭 다중처리 (SMP)모든 프로세스가 하나의 Ready Queue에 들어가 있는 방식과..

[OS #22] 다단계 큐

·
CS/OS
1. 다단계 큐1.1 다단계 큐란?준비 큐를 fg와 bg로 분리한 것을 말한다.빨리 처리해야 하는 작업은 fg, 늦게 처리해도 되는 작업은 bg에 둔다.Foreground QueueRound Robin 사용 (응답속도 중점)Backgorund QueueFCFS 사용 (처리량 중점)1.2 스케줄링 방법고정 우선순위 스케줄링 (Fixed Priority Scheduling)Foreground Queue의 Task들이 완료될 때까지, Background Queue의 Task들이 기다린다.즉, 우선순위가 낮은 Task들은 평생 기다려 굶어 죽을 수 있다.(기아 상태(Starvation))시분할 (Time Slice)각 큐마다 사용할 수 있는 CPU 시간을 분배하는 방법이다.예시) Foreground Queue ..

[OS #21] CPU 스케줄링

·
CS/OS
1. CPU 스케줄링⭐1.1 목적CPU가 쉬지 않고 최대한 일을 하도록 하기 위해 CPU 스케줄링을 한다!멀티프로그래밍을 통해 CPU 효율을 극대화 ( *오버헤드를 최소화 )프로세들에게 합리적으로 CPU 자원 배분(=CPU 스케줄링)1.2 Burst (버스트)어떤 현상이 짧은 시간 안에 집중적으로 일어나는 것을 의미 (e.g., 수강신청)CPU burst프로세스가 CPU에서 연속적으로 CPU를 사용하는 시간 (job size)I/O burst프로세스가 IO 작업을 요청하고, 그 결과를 기다리는 시간 (CPU 사용 x)즉, 프로세스는 CPU burst와 I/O burst가 번갈아가며 실행되는 것을 알 수 있다.1.3 CPU-Burst Times 히스토그램I/O작업을 수행하는 빈도가 많아질수록 CPU bur..

[OS #20] 암달의 법칙

·
CS/OS
코어를 두 개, 세 개로 늘려주면 정말 성능 향상이 될까? 암달의 법칙을 통해 알아보자!1. 암달의 법칙1.1 암달의 법칙이란?암달의 법칙(Amdahl's law)이란, 컴퓨터 시스템의 일부를 개선할 때 전체적으로 얼마만큼의 최대 성능 향상이 있는지 계산하는 데 사용된다.이 법칙에 따르면 싱글코어 대신 듀얼코어를 사용하더라도 CPU 내 부품들의 병목현상으로 CPU의 성능이 2배가 되진 않는다.1.2 공식1.3 특징N(processing core)이 무한대이면, `1/S`로 수렴한다. (s에만 영향을 받는다.)S(Serial, 직렬)가 `1`이면, 결과가 `1`이 된다. (n의 영향을 받지 않는다.)즉, 이 수식은 N을 무한대로 보내면 `N/(1-S)`는 `0`이 되어 코어를 아무리 늘려도 S(시리얼, 순..

[OS #19] Kernel 자료구조

·
CS/OS
1. Kernel 자료구조1.1 Linked List Singly Linked List Doubly Linked List Circular Linked List 단방향(단일) 연결리스트양방향(이중) 연결리스트원형 연결리스트다음 원소의 주소를 붙여놓은 형태다음 자료와 이전 자료의 주소를 붙여 놓은 형태연결 리스트의 마지막 항목에 첫 항목의 주소를 붙여 놓은 형태1.2 BST, Binary Search Tree (이진 탐색 트리)자료 간의 부모-자식 관계(상하 관계)를 표현하는 자료 구조이다.왼쪽 서브트리 ≤ 자신오른쪽 서브트리 ≥ 자신이진 탐색 트리가 검색할 때 효율적이라는 것을 알 수 있다!구분선형 검색이진 탐색 트리검색 성능O(n)O(lg n)시간 복잡도선형 시간 복잡도로그 시간 복잡도1.3 Hash..

[OS #18] 메모리 저장 방식 (Byte order)

·
CS/OS
1. Byte order글을 읽을 때 왼쪽에서 오른쪽으로 읽는 것처럼 컴퓨터도 데이터를 읽을 때의 규칙이 필요하다.바이트 저장 순서 규칙은 Big-endia와 Little-endian가 있다.Big-endia와 Little-endian를 서로 변환, 해석할 해석기가 필요하다.1.1 Big-endian최상위 바이트를 먼저 저장한다.즉, 사람이 숫자를 쓰는 방식과 같이 낮은 주소에 높은 바이트부터 저장한다.1.2 Little-endian최하위 바이트를 먼저 저장한다.즉, 낮은 주소에 낮은 바이트부터 저장한다.

[OS #17] Microkernels

·
CS/OS
1. Microkernels1.1 특징커널이 커져 관리가 어려워지면서 가능한 많은 기능을 커널에서 사용자 공간으로 옮겨 커널을 최소화하는 설계 방식이다.( 커널에서 최소한의 기능만을 제공 )Mach : 카네기 멜론 대학교에서 개발한 첫 번째 Microkernels이다.Mac OS X 커널(Darwin)은 부분적으로 Mach에 기초한다.사용자 모듈 간의 통신은 message passing을 사용한다.1.2 장점모듈화 : 각 서비스는 독립적으로 작동하므로 모듈화가 쉬워 확장하기 좋다.유연성 : 새로운 H/W, S/W 에 이식이 쉽다.안정성 : 한 서비스에 문제가 생겨도도 그 영향력이 해당 모듈에 국한되므로 전체 시스템에 대한 영향을 최소화할 수있어 보안 위협에 대한 리스크를 줄일 수 있다.신뢰성, 보안성 :..

[OS #16] Mechanisms and Policies

·
CS/OS
1. Mechanisms and Policies1.1 중요한 원칙정책과 메커니즘을 분리를 해야한다.나중에 정책이 변경될 때 최대한의 융통성이 생기기 때문이다.정책은 장소가 바뀌거나 시간의 흐름에 따라 변경될 수 있다.정책에 민감하지 않은 기법이 바람직하다.1.2 정책과 기법정책(Policies): 무엇을 (규칙) 할 것인가?기법(Mechanism): 어떻게 (도구) 할 것인가?1.3 예시CPU를 계속 점유하는 것을 방지하기 위해 Timer를 사용한다. ( 기법 )특정 사용자에게 Timer를 얼마나 오랫동안 설정할 것인지 결정한다. ( 정책 )

[OS #15] 캐시, 버퍼, 스풀

·
CS/OS
1. 캐시1.1 캐시란?캐시란 자주 사용하는 데이터나 값을 복사해놓는 임시 저장 장소를 말한다. (느린 저장장치에서 빠른 저장장치로 복사 -> 병목현상 해결)데이터 접근 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 줄이고 싶은 경우 사용한다.캐시는 CPU 사이 위치하고 메모리보다 빠른 SRAM 기반 저장장치이다.1.2 캐시 작동 방식CPU는 메모리를 접근해야 할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아본다.캐시에서 원하는 데이터를 찾았으면 캐시 히트라고 하며, 그 데이터를 바로 사용한다.캐시에서 원하는 데이터를 못 찼았으면 캐시 미스라고 하며, 메모리로 가서 데이터를 찾는다.캐시 공간은 작으므로, 공간이 모자라게 되면 안 쓰는 데이터부터 삭제하여 공간을 확보한다. (Eviction)..

[OS #14] DMA (Direct Memory Access)

·
CS/OS
메모리 직접 접근 (DMA, Direct Memory Access)DMA란?CPU의 개입 없이 입출력 장치가 메모리(RAM)에 직접 데이터를 전송하는 방식을 DMA(Direct Memory Access)라 한다.고속 입출력 장치와 메모리 간의 전송 효율을 높이기 위한 핵심 기술이다.DMA는 CPU 대신 데이터 전송을 담당하는 하드웨어로 이해하면 된다.대용량 입출력 환경에서 CPU의 부하를 줄이고 시스템 성능을 극대화하기 위해 필수적인 기술이다.DMA가 필요한 이유입출력 장치와 CPU 사이의 속도 차이는 매우 크다.CPU가 모든 입출력 처리를 직접 담당하면 아래와 같은 비효율이 발생한다.CPU가 I/O 전송을 기다리는 동안 유휴 상태(idle) 가 된다.대용량 데이터를 한 번에 처리할 때 인터럽트 발생 빈..

[OS #13] 기억장치

·
CS/OS
기억장치에 대해 조금 더 세부적인 내용을 알고 싶으면 [Computer Structure] 기억장치↗포스팅을 참고하자1. 기억장치프로그램을 실행하려면 먼저 프로그램을 메모리에 적재해야 한다.1.1 주 기억장치(main memory)특징CPU 직접 접근 가능 (CPU와 직접적인 통신)CPU와 가까이 위치프로그램과 데이터를 모두 보관하기에 크기가 작음종류메모리 종류특성RAM휘발성 메모리ROM비휘발성, 펌웨어 저장, 부트스트랩 프로그램1.2 보조 기억장치특징CPU 직접 접근 불가 (무조건 주기억 장치를 거침)현재는 필요하지 않은 프로그램이나 데이터를 저장하고 있다가 필요할 때 주기억 장치로 전송비 휘발성모든 프로그램을 메모리에 올릴 수 없어 필요한 부분만 메인 메모리에 올리고, 나머지는 보조 기억 장치의 스..

[OS #12] 단일/다중 프로그래밍과 시분할

·
CS/OS
1. 단일/다중 처리기 vs 단일/다중 프로그래밍이전에 포스팅한 단일/다중 처리기 시스템과 단일/다중 프로그래밍은 다른 개념이다!단일/다중 처리기 시스템은 CPU, 코어 개수에 따른 컴퓨터 시스템의 구성을 나타내는 것이라면,단일/다중 프로그래밍은 프로세스가 CPU를 효과적으로 활용하기 위해 OS의 프로세스 스케줄링과 자원 관리 전략을 나타낸다.➡️ 다중 프로그래밍은 다중 처리기 시스템에서 활용될 수 있다2. 단일 / 다중 프로그래밍2.1 단일 프로그래밍 (Single Programming)한 번에 하나의 프로그램만 사용 가능하다.2.2 다중 프로그래밍 (Multiprogramming)CPU가 항상 하나 이상의 작업을 실행하게 구성하는 것을 말한다.동작 방식OS는 시스템에 있는 모든 프로세스(실행 중인 프..

[OS #11] 단일/다중 처리기 시스템

·
CS/OS
1. 컴퓨터 시스템의 구성단일/다중 처리기 시스템은 CPU, 코어 개수에 따른 컴퓨터 시스템의 구성을 나타낸다.용어CPU : 명령어들을 실행하는 하드웨어Processor(처리기) : 하나 이상의 CPU를 포함하는 물리적인 칩Core : CPU의 기본 연산 단위다중 코어(Multicore): 동일한 CPU에 여러 개의 코어 포함다중 처리기(Multi-Processor): 여러 프로세서를 포함2. 단일 처리기 시스템단일 처리기 시스템 (Single-Processor Systems)이란, 하나의 CPU를 사용하여 작업을 처리하는 방식을 말한다.하나의 코어를 갖고 있다3. 다중 처리기 시스템3.1 다중 처리기 시스템이란?다중 처리기 시스템 (Multi-Processor Systems)이란, 밀접한 통신을 하는 ..

[OS #10] Thread

·
CS/OS
1. 스레드 개요1.1 스레드(Thread)란?프로세스를 구성하는 실행의 흐름 단위이다.하나의 프로세스는 여러 개의 스레드를 가질 수 있다.원래 프로세스는 한 번에 하나의 일만을 처리했으나, 스레드라는 개념이 도입되며 한 번에 여러 일을 처리할 수 있게 된 것이다!MS 워드에서 글자 잘 못 썼을 때 빨간색으로 표시되거나 자동 저장되는 기능 하나하나가 스레드이다. 클라이언트&서버 구조에서의 스레드1.2 스레드의 구성요소스레드 ID프로그램 카운터레지스터 집합스택1.3 스레드 장점응답성 향상: 병렬적으로 업무 처리 가능하기 때문자원 공유: 각 스레드가 다른 처리기에서 병렬로 실행될 수 있다.경제성: 프로세스를 만드는 것보다 더 저렴하다.1.4 멀티코어 프로그래밍한 개의 칩에 여러 개의 CPU(core)가 존재..

[OS #9] 프로세스의 연산

·
CS/OS
1. 프로세스 생성프로세스를 새로 생성하는 방법뿐만 아니라, 실행 중인 프로세스로부터 새로운 프로세스를 복사(`fork`)하는 방법도 있다.1.1 fork() 시스템 콜fork() 시스템 콜이란?fork() 시스템 호출은 실행 중인 프로세스를 복사본을 생성한다.부모 - 자식 관계가 형성되며, 생성된 자식 프로세스는 부모 프로세스와 동일한 메모리(같은 코드 및 데이터)를 가진다.부모와 자식 프로세스는 서로 다른 주소 공간을 가지므로, 한 프로세스에서 일어나는 메모리 변경이 다른 프로세스에 영향을 주지 않는다.fork() 시스템 호출의 동작 과정fork() 시스템 호출을 사용하면 실행 중인 프로세스와 똑같은 프로세스가 하나 더 만들어진다. (트리 구조 형성)단, PID가 변경된다.fork() 성공시 반환 값..

[OS #8] IPC (프로세스간 통신)

·
CS/OS
IPC를 공부할 때 어려웠는데🤯🤯🤯🤯taegyunwoo.github 이 분이 작성하신 포스팅이 많은 도움이 되었다.╰(*°▽°*)╯1. IPC 개요1.1 IPC 란?IPC (Inter-Process Communication)란, 동일한 시스템에서 실행되는 두 개 이상의 프로세스 간에 데이터를 교환을 의미한다.컴퓨터 시스템에서 프로그램은 독립적인 공간을 가진다.즉, OS는 메모리 공간에 대해서 다른 프로세스가 접근하지 못하도록 외부 접근을 차단한다.이렇게 프로세스는 원래 독립적이지만, 상황에 따라서 프로세스끼리 협력해야 하는 경우가 발생한다.이럴 때 프로세스 간 자원과 데이터를 공유할 수 있어야 하는데, 커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공하게 되고, 프로세스는 커널이 제공하는 I..

[OS #7] Process와 Context Switching

·
CS/OS
1. Process 개요1.1 Process란?실행 중인 프로그램을 말한다.프로그램이 메모리에 적재하고 실행되는 순간 프로세스가 된다.① 실행 가능한 파일이 메모리에 올라가면 프로세스가 된다.② 해당 방향으로 동적 증가힙 영역: 낮은 주소 -> 높은 주소스택 영역: 높은 주소 -> 낮은 주소 ③ 힙 영역과 스택 영역의 크기는 가변적이다. (동적 할당 영역) 구분 설명 예시 Stack데이터를 일시적으로 저장하는 영역.함수 호출 시 생성되고, 함수가 종료되면 자동으로 해제된다.함수 매개변수, 지역변수, 반환 주소 등Heap프로그래머가 직접 메모리를 할당/해제할 수 있는 영역반환하지 않으면 메모리 누수 발생new로 생성된 모든 Java 객체, C의 malloc()Data프로그램 실행 동안 유지되어야 하는 데..

[OS #6] 타이머와 watchdog

·
CS/OS
1. 타이머타이머는 무한 루프나 자원을 계속 사용하는 프로세스를 방지하기 위해 사용한다.즉, OS에게 자원(CPU 등)을 돌려주지 않는 프로세스를 방지한다.지정된 시간 후에 인터럽트를 설정한다.OS가 PC 값을 감소시키며 0이 될 때 인터럽트를 발생시켜 무한 루프∙자원을 계속 사용하는 프로세스를 방지한다.타이머 인터럽트 발생시 운영체제가 제어한다.오류로 간주해 프로그램 중단시키거나 프로그램에게 더 많은 시간 할당한다.2. watchdog타이머와 비슷한 개념으로 watchdog이 있다.watchdog은 특정 동작이 지속적으로 반응하지 않을 때 타이머를 두고 동작을 리셋한다.

[컴퓨터 구조 #6] 에러 검출 코드

·
CS/컴퓨터 구조
1. 에러 제어 방식1.1 에러 제어 방식이란?수신 측에서는 송신 측에서 보낸 정보를 기초로 에러를 검사하여 자체 정정하거나 송신 측에 재전송을 요청한다.즉, 전송 중 발생한 오류를 검출하고 제어하는 기술 전반을 의미한다.1.2 FEC와 ARQ의 장단점장/단점 FEC(전진 에러 수정) ARQ(검출 후 재전송) 장점① 수신 측에서 에러를 정정할 수 있다.② 재전송을 하지 않아 대역폭 관리에 효율적이다.① 수신 측 정보에 에러정정부호를 삽입할 필요가 없으므로 구현이 간단하다.② 프레임에 FCS만 붙는다.단점① 에러정정부호의 삽입으로 프레임의 크기가 커진다.② 구현이 어렵다.① 수신 측이 자체 에러정정을 못한다.② 재전송에 드는 대역폭 손실이 크다.💡 대역폭(Bandwidth): 특정한 기능을 수행할 수 ..

[컴퓨터 구조 #5] 숫자 및 문자 코드

·
CS/컴퓨터 구조
숫자 코드와 문자 코드가 컴퓨터 내부에서 어떻게 표현되는지 살펴보자.1. 숫자 코드1.1 BCD 코드BCD(Binary-Coded-Decimal-code) 코드? 10진수의 각 자리 숫자를 4bit(네 자리)의 이진수로 표현한 코드실제 표기는 2진 수지만 10진수처럼 사용한다.BCD 코드(=2진화 10진 코드, =8421 코드)BCD 코드는 각 자리값에 8,4,2,1이라는 가중치가 있기 때문에 가중치 코드이다.BCD 코드 구현 방법아래와 같이 하나의 값(10진수)을 4개의 2진수 bit로 나타낼 수 있다.BCD와 2진수와의 비교BCD는 10진수를 2진수로 변환해 주는 거 아닌가? `NO`10진수로 또는 10진수로부터의 변환이 상대적으로 용이하다.BCD 코드는 현재 잘 사용하지 않는다!① 2진수보다 더 많..

[컴퓨터 구조 #4] 진법 변환

·
CS/컴퓨터 구조
2진수 10진수 변환아래처럼 의미가 있는 부분만 남기고 나머지를 절사하는 경우도 있음 (유의미한 숫자까지 절사) 8진수 10진수 변환8진수 → 2진수 변환2진수로 된 3자리로 8진수 표현 가능 → 2진수와 8진수 사이의 변환이 용이8진수에서 2진수로의 변환은 각 8진 디지트(숫자)를 같은 값의 2진수로 변환함으로써 수행10진수 16진수 변환16진수에서 `A`는 `10`16진수 2진수 변환2진수 4자리 → 16진수 표현 O 🔖정리