본문 바로가기
반응형

CS(Computer Science)55

[운영체제] Segmentation Segmentation - 프로그램을 구성하는 주소 공간을 의미단위로 쪼갠 것 - 크기가 가변적 - code, data, stack 장점 - 의미 단위여서 공유와 보안에 paging보다 효과적이다 - 내부 단편화 문제 해소 단점 - 길이가 동일하지 않으므로 가변분할 방식에서와 동일한 문제점들이 발생 - 외부 단편화 문제 2023. 4. 28.
데이터베이스(relational database)개념과 relation, primary key(기본키), foreign key(외래키), constraints domain : 더이상 나누어 지지 않는 값들의 집합 domain name : domain 이름 relation : 튜플들의 집합 ex)열들이 모인 테이블 tuple : 각 attribute의 값으로 이루어진 리스트 ex)한 열 attribute : domain이 relation에서 맡은 역할 ex) 컬럼 relation schema - relation 이름과 attributes 리스트로 표기된다 - ex) STUDENT(id, name, grade) degree of a relation - relation schema에서 attributes의 수 - ex) STUDENT(id, name, grade) -> degree 6 relation database - relational data model에 기반.. 2023. 4. 4.
[데이터베이스] 데이터베이스 기본 개념 데이터베이스(DB) - 전자적으로 저장되고 사용되는 관련있는 데이터들의 조직화된 집합 -> 데이터를 조직화된 집합으로 만들어 불일치를 막고 효율적으로 관리한다 DBMS - 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템 - ex) PostgreSQL, MYSQL, oracle DB를 정의하다 보면 부가적인 데이터(metadata)가 발생한다 ※ metadata: data를 설명하기 위한 data - db를 정의하거나 기술하는 data - ex) 데이터 유형, 구조, 제약 조건, 보안, 인덱스 data models - db의 구조를 기술하는데 사용될 수 있는 개념들이 모인 집합 - db 구조를 추상화해서 표현할 수 있는 수단을 제공 1. conceptual data models.. 2023. 4. 3.
[운영체제] Paging Paging - 주소공간을 동일한 크기의 page로 나누고 어디든지 올라갈 수 있는 방법 - 논리적 메모리를 페이지 테이블을 통해 주소를 변환하고 메모리에 올린다 - page table에는 물리적 메모리가 어디에 올라가있는지를 나타낸다 Address Translation Architecture p: page번호 d: page내에서 상대위치, 바뀌지않는다 - page table은 main memory에 상주 - PTBR이 page table 가리킴 - PTLR이 테이블 크기를 보관 - 속도 향상을 위해 TLB 사용 - TLB를 먼저 검색한다 - 있으면 참고하고 없으면 table을 토대로 변환한다 Two-Level-Page Table 2단계 Page Table 사용하는 이유: 테이블에서 사용이 안되는 공간이.. 2023. 3. 13.
[운영체제] 메모리 관리 물리적 메모리를 관리하는 방법에 대해 알아보자 메모리는 일반적으로 os상주영역과 사용자 프로세스 영역이 있다. 사용자 프로세스 영역은 연속할당과 불연속할당이 방법이 있다 연속할당 1. 고정분할 방식 - 프로그램이 들어갈 사용자 영역을 미리 파티션으로 나누어 놓음 - 물리적 메모리를 몇 개의 영구적 분할로 나눔 - 분할의 크기가 모두 동일한 방식과 서로 다른 방식이 존재 외부조각: 빈 공간인데 프로그램이 올라갈 수 없는 작은 분할 내부조각: 프로그램크기가 분할크기보다 작을 때 남는 메모리공간 2. 가변분할 방식 - 사용자 프로 미리 나눠놓지 않고 실행될때마다 순서대로 쌓는 것 - 프로그램 B가 끝나면 D는 공간이 안 맞아서 안 들어가고 외부조각으로 채움 - 프로그램의 크기를 고려해서 할당 Hole 발생 가.. 2023. 2. 20.
[운영체제] 메모리 메모리에 대해 알아보자 논리적 주소 - 프로세스마다 독립적으로 가지는 주소 공간 - 각 프로세스마다 0번지부터 시작 - CPU가 보는 주소는 논리적 주소다 물리적 주소 - 메모리에 실제 올라가는 위치 ※ 주소 바인딩: 주소를 결정하는 것 상징적 주소 -> 논리적 주소 -> 물리적 주소 주소 바인딩이 언제 이뤄지는가 1. Compile time binding - 논리적 주소를 바탕으로 올린다 - 논리적 주소와 물리적 주소가 같다 - 컴파일러는 절대 코드 생성 - 시작 위치 변경시 재컴파일 - 지금은 사용하지 않는다 2. Load time binding - 메모리에 올라갈떄 물리적 주소가 결정된다 - 컴파일러가 재배치가능코드를 생성한 경우 가능 3. Execution(Run) time binding - 메모.. 2023. 2. 20.
[운영체제] 교착상태(deadlock) 교착상태란 무엇인가? 그림을 보면 어느 누구도 움직이지 못하는 상황이다. 이처럼 자원이 모두 사용 중이어서 프로세스들이 계속 기다리는 상태를 교착상태라고 한다. Deadlock: 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 - 자원(resource): 하드웨어, 소프트웨어 등을 포함하는 개념 - ex) 시스템에 2개의 tape drive가 있다. 프로세스 A와 B가 각각 하나의 tape drive를 보유한 채 다른 하나를 기다리고 있다. deadlock 발생의 4가지 조건 1. 상호배제: 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 2. 비선점: 프로세스는 자원을 스스로 내어놓을뿐 강제로 빼앗기지 않음 3. 보유대기: 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을.. 2023. 2. 18.
API란 무엇인가? API(Application Programming Interface)란 무엇인가? 한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법이다. 예를 들어 식당메뉴판이라 생각하면 된다. 메뉴판을 보고 주문하는것처럼 식당과 손님이 음식을 주고받기 위한 방법 웹툰을 보내주는 프로그램을 만든다 해보자. 먼저 어떤 웹툰이 있는지 메뉴판을 만들어야한다. 이 메뉴판이 웹툰 서버와 손님이 웹툰을 주고받기 위한 방법인 웹툰서비스 API이다. app.get('/detail/"id',function(req,res){ db.collection('웹툰').findOne({_id:parseInt(요청.params.id)},function(에러, 결과){console.log(결과); res.render('detail.ejs.. 2023. 2. 17.
[운영체제] Concurrency Control 병행 제어 세마포어: 프로그래머 관점에서 동기화 문제를 해결 Monitor - 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct - 프로그래밍 언어차원에서 공유데이터에 동시접근하는 문제를 모니터가 자동으로 해결함 프로그래머에 부담을 줄여주는 방법 - 공유데이터에 접근할때는 접근 코드가 있는데 모니터 안에 정의되어있다. 모니터 안에 정의된 코드로만 접근할 수 있게 한다. - 모니터 내에서는 한번에 하나의 프로세스만이 활동 가능 - 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요없음 - 프로세스가 모니터 안에서 기다릴 수 있도록 하기 위해 Condition variable 사용 - wait와 sign.. 2023. 2. 15.
728x90