반응형

분류 전체보기 444

Chapter 03(2). 운영체제

4.CPU 스케줄링 우선순위모든 프로세스는 CPU의 자원을 필요로 하기 때문에 운영체제는 공정하고 합리적인 방법으로 CPU의 자원을 프로세스에 할당해야 한다. 운영체제는 프로세스별 우선순위 priority 를 판단하여 PCB에 명시하고,우선순위가 높은 프로세스에는 CPU의 자원을 더 빨리, 더 많이 할당한다.사용자가 일부 프로세스의 우선순위를 직접 높일 수도 있다.다양한 할당 기준이 있지만, 가장 대표적인 고려 요소는 CPU 활용률이다.운영체제는 가급적 CPU 활용률을 높게 유지할수 있도록 우선순위를 할당한다.CPU 활용률 CPU utilization 이란 전체 CPU의 가동 시간 중 작업을 처리하는 시간의 비율을 의미한다.운영체제는 높은 CPU 활용률을 유지하기 위해 기본적으로 입출력 작업이 많은 프로..

스터디 2025.11.16

Chapter02. 컴퓨터 구조

[컴퓨터가 이해하는 정보]데이터 0과 1로 문자 표현하기문자 집합 : 컴퓨터가 이해할 수 있는 문자들의 집합문자 인코딩 : 문자 집합 속한 문자를 컴퓨터가 이애하는 0과 1로 이루어진 문자 코드로 변환하는 과정문자 디코딩 : 0과 1로 표현된 문자를 사람이 이해하는 문자로 변환하는 과정 인코딩 방식 종류아스키 코드 : 한글을 표현할 수 없다.EUC-KR : 아스키 문자를 표현할 때는 1바이트, 하나의 한글 글자 표현할 때는 2바이트 크기의 코드를 표현한다. 문자 집합에 정의되지 않은 '똠' '쀍' 같은 글자는 EUC-KR로 표현할 수 없다. 유니코드 : 한글 포함해 많은 언어 특수문자, 화살표, 이모티콘까지 코드로 표현할 수 있다. 가변 길이 인코딩 UTF-8, UTF-16, 고정 길이 인코딩 UTF-..

스터디 2025.11.02

[가상면접 사례로 배우는 대규모 시스템 설계 기초2] 13장. 증권 거래소

기능 요구사항새 주문을 넣을 수 있고, 체결되지 않은 주문은 취소할 수 있어야 한다. 주문이 체결된 경우에는 실시간으로 그 사실을 알 수 있어야 한다. 호가 창(order book)의 정보는 실시간으로 갱신되어야 한다. 최소 수만 명 사용자가 동시에 거래할 수 있어야 하고, 최소 100가지 주식 거래가 가능해야 한다. 거래소는 규제 시설이므로 위험성 점검(risk check)이 가능해야 한다. 간단한 점검이 가능해야 한다. 일례로, 한 사용자가 하루에 거래할 수 있는 애플 주식을 백만 주 이하로 제한하는 규칙이 있다고 했을 때, 해당 규칙을 위반하는 거래가 이루어지지 않도록 점검할 수 있어야 한다. 개략적 규모 측정100가지 주식하루 10억 건의 주문뉴욕증권거래소는 월요일부터 금요일까지, 오전 9시 3..

[netlify] blob 설정 - api key, site id 확인 방법

1. 프로필 아이콘 클릭 -> user settings 2. Applications -> Personal access tokens -> new access token https://app.netlify.com/user/applications/personal 3. desription 쓰고 생성하면 끝 ! +) netlify blob 사용 시 요점: 해당 포럼 글에서도 언급되듯, Blobs의 자동 자격증명 주입은 Netlify Functions v2/Edge Functions 런타임에서만 된다고 한다. 로컬 독립 스크립트(vite-node)에서는 getStore('foo')만으로는 동작하지 않고 siteID와 token이 필요하다. 참고: Functions v2 맥락에서만 자동 주입 및 v2 런타임 ..

개발 2025.10.14

[가상면접 사례로 배우는 대규모 시스템 설계 기초2] 12장. 전자 지갑

12장. 전자 지갑 2단계 : 개략적 설계안 제시 및 동의 구하기인메모리 샤딩지갑 애플리케이션은 모든 사용자 계정의 잔액을 유지한다. 이 관계를 나타내는 자료구조로는 해시 테이블을 사용한다 .인메모리 저장소로 인기 있는 선택지 중 하나는 레디스다. 그러나 레디스 노드 한 대로 100만 TPS 처리는 벅차다. 클러스터를 구성하고 사용자 계정을 모든 노드에 균등하게 분산시키는 파티셔닝(partitioning) 또는 샤딩(sharding)을 해야 한다. 클라이언트 A에서 클라이언트 B로 1달러를 이체하라는 명령을 받으면 두 개의 레디스 노드에 두 개의 명령이 전달된다. 첫 번째 업데이트를 끝난 후 두 번째 업데이트 완료하기 전에 지갑 서비스가 죽어버리면 이체는 온전히 마무리하지 못하기 때문에 모두 성공하리라..

[가상면접 사례로 배우는 대규모 시스템 설계 기초2] 11장. 결제 시스템

11장. 결제 시스템 1단계 : 문제 이해 및 설계 범위 확장 기능 요구사항대금 수신 (pay-in) 흐름 : 결제 시스템이 판매자를 대신하여 고객으로부터 대금을 수령한다. 대금 정산 (pay-out) 흐름 : 결제 시스템이 전 세계의 판매자에게 제품 판매 대금을 송신한다. 비기능 요구사항신뢰성 및 내결함성 : 결제 실패는 신중하게 처리해야 한다. 내부 서비스 (결제 시스템, 회계 시스템)와 외부 서비스(결제 서비스 제공업체) 간의 조정 프로세스 : 시스템 간의 결제 정보가 일치하는지 비동기적으로 확인 개략적 규모 측정하루에 100만건의 트랜잭션을 처리해야 한다. (초당 10건의 트랜잭션) 2단계 : 개략적 설계안 제시 및 동의 구하기복식부기 원장 시스템원장 시스템에는 복식 부기(double-entry)..

[가상면접 사례로 배우는 대규모 시스템 설계 기초2] 10장. 실시간 게임 순위표

10장. 실시간 게임 순위표 1단계 : 문제 이해 및 설계 범위 확장 기능 요구사항순위표에 상위 10명의 플레이어를 표시한다.특정 사용자의 순위를 표시한다. 어떤 사용자보다 4순위 위와 아래에 있는 사용자를 표시한다. (보너스 문제)비기능 요구사항점수 업데이트는 실시간으로 순위표에 반영한다. 일반적인 확장성, 가용성 및 안정성 요구사항 개략적 규모 측정 사용자수게임을 하는 사용자가 24시간 동안 고르게 분포한다고 자정하면 DAU가 500만 명인 게임의 경우 초당 평균 50명의 사용자가 게임을 플레이하게 된다. 하지만 그렇게 사용량이 균등한 경우는 별로 없으며, 서로 다른 시간대의 사람들이 동시에 게임할 수 있는 북미 지역 기준 저녁 시간이 피크 시간대일 가능성이 높다. 이를 고려하기 위해 최대 부하는 평..

[가상면접 사례로 배우는 대규모 시스템 설계 기초2] 8장.분산 이메일 서비스

지메일, 아웃룩 또는 야후 메일같은 대규모 분산 이메일 서비스 설계 1단계 : 문제 이해 및 설계 범위 확정기능 요구사항이메일 발송/수신 + 첨부파일SMTP, POP, IMAP 등의 프로토콜과 서비스 제공자 전용 프로토콜 사용모든 이메일 가져오기읽음 여부에 따른 이메일 필터링제목, 발신인, 메일 내용에 따른 검색 기능스팸 및 바이러스 방지 기능 개략적인 규모 측정10억 명의 사용자한 사람이 하루에 보내는 이메일 수는 10건, 이메일 전송 QPS = 10의 9승 * 10 / 10의 5승 = 100,000 이다. 한 사람이 하루에 수신하는 이메일 수는 평균 40건, 하나의 메타데이터는 50MB라고 가정 (이때 첨부파일은 미포함)메타데이터는 데이터베이스에 저장한다고 가정. 1년간 10억명 사용자 * 하루 4..

[supabase][postgresql] Row Level Security 이란

https://supabase.com/docs/guides/database/postgres/row-level-security Row Level Security | Supabase DocsSecure your data using Postgres Row Level Security.supabase.com supabase를 사용하다 보면, RLS enabled/disabled가 보이는데, 해당 기능이 어떤 기능인지 알아봤다. supabase 기능이라기보다는 postgres의 기능에 가깝다고 한다. https://www.postgresql.org/docs/current/ddl-rowsecurity.html 이 기능을 통해 사용자가 어떤 행을 조회, 삽입, 수정, 삭제할 수 있는지를 제어할 수 있다고 한다.기..

개발 2025.09.04

[supabase] Supabase Publishable Key vs Secret Key 정리

1. project settings 클릭 2. api keys 탭 > create new key 클릭 3. add new secret key 로 등록 4. name, description 입력 후 등록하면 된다. 참고로, publishable key와 secret key가 있는데 https://supabase.com/docs/guides/api/api-keys 여기 문서를 보면 TypeFormatPrivilegesAvailabilityUsePublishable keysb_publishable_...LowPlatformSafe to expose online: web page, mobile or desktop app, GitHub actions, CLIs, source code.Secret keys..

개발 2025.08.29
반응형