
Goal 병행성(Concurrency)의 원리와 주요 용어를 이해할 수 있음 경쟁상태(Race Condition)의 문제점에 대해 이해할 수 있음 상호배제(Mutual Exclusion)의 필요성을 이해할 수 있음 세마포어를 정의하고 동작 방식을 이해할 수 있음 모니터를 정의하고 동작 방식을 이해할 수 있음 메시지 전달을 이용한 상호배제 기법을 이해할 수 있음 병행성 원리 병행 처리의 문제점 전역 자원의 공유가 어려움 운영체제가 자원을 최적으로 할당하기 어려움 프로그래밍 오류를 찾아내는 것이 어려움 병행성과 관련 있는 주요 용어 운영체제 고려 사항 다양한 프로세스의 행위를 추적할 수 있어야함 각 프로세스에게 자원을 할당하거나 반납 받을 수 있어야함 한 프로세스가 소유한 자원이나 데이터를 다른 프로세스의 ..

Goal 프로세스와 쓰레드의 차이를 이해할 수 있음 쓰레드와 관련된 기본 설계 이슈를 설명할 수 있음 사용자 수준의 쓰레드와 커널 수준의 쓰레드의 차이를 설명할 수 있음 프로세스와 쓰레드 현대 OS에서 프로세스는 태스크(Task) 및 쓰레드(Thread)라는 두 객체(특성)으로 분리 태스크 : 사용자 문맥, 시스템 문맥(Resource Container) -> 프로세스와 혼용하여 사용하기도 함 쓰레드 : 제어 흐름(실행 정보, 레지스터 문맥) -> 경량 프로세스라고 부르기도 함 쓰레드 모델 쓰레드(Thread) 장점 프로세스에 비해 새로운 쓰레드 생성 시간/비용이 절약 프로세스 종료 시간보다 쓰레드 종료 시간이 짦음 한 프로세스 내의 두 쓰레드들 사이의 교환/교체 시간이 짧음 동일 프로세스 내의 쓰레드들..

Goal 프로세스를 정의하고, 제어 블록으로 관계를 설명할 수 있음 프로세스 상태의 개념을 설명하고, 상태 전이에 대해 설명할 수 있음 프로세스 관리를 위한 자료구조 및 자료구조 구성 요소들의 목적을 설명할 수 있음 운영체제 요구조건 운영체제는 적절한 응답 시간을 제공하면서 처리기 이용률을 극대화할 수 있도록 여러 프로세스 수행을 인터리빙(interleaving)해야 함 교착상태를 회피함과 동시에 특정 정책(우선순위 부여)에 부합하도록 자원을 프로세스에게 할당해야함 프로세스 간 통신과 사용자의 프로세스 생성을 지원하고 구조화하는데 도움이 되야함 프로세스 정의 수행 중인 프로그램 컴퓨터에서 수행 중인 한 프로그램의 인스턴스 한 처리기 상에 할당되어 실행될 수 있는 객체 명령들의 순차 실행, 현재 상태, 연..

Goal 운영체제의 핵심 기능에 대한 이해 주요 운영체제 설계 영역에 대한 이해 가상화에 대해 정의하고 설명할 수 있음 운영체제 설계 이슈에 대한 이해 운영체제 응용 프로그램의 실행을 제어하는 프로그램 컴퓨터 사용자와 하드웨어 사이에 중재자(intermediary) 역할을 하는 프로그램 커널 (Kernel) : 주 메모리에 상주하는 운영체제 핵심 일괄처리 멀티 프로그래밍 여러 개의 프로그램이 메모리에 올라와 CPU를 번갈하가며 사용하며 작업을 수행 멀티 프로그래밍을 위한 운영체제 기능 운영체제에 의해 I/O 작업이 수행 메모리 관리 : 여러 개의 job에 메모리 할당 CPU 스케줄링 : 준비 상태에 있는 job 중 하나를 선택해 CPU를 할당 목적 : CPU 이용률(utilization)의 극대화 단점 ..

DB 트랜잭션(Transaction) 트렌잭션이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 - SELECT - INSERT - DELETE - UPDATE 작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 게시판에서 사용자가 글을 작성하고, 올리기 버튼을 누른 후 게시판에 다시 돌아오면 게시판에 내가 쓴 글이 업데이트 된 상태를 볼 수 있다. * 이때 DB 작업 - 올리기 버튼을 누른다 : INSERT문을 사용해 사용자가 입력한 게시글 데이터를 옮김 - 게시판 새로 구성 : SELECT문을 사용해 최신 정보를 유지 현재 작업 단위 : INSERT문 + SELECT문 → 이를 통틀어 하나의..

로드 밸런싱(Load Balancing) 둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것 요즘 시대에는 웹사이트에 접속하는 인원이 급격히 늘어나게 되었다. 따라서 이 사람들에 대해 모든 트래픽을 감당하기엔 1대의 서버로는 부족하다. 대응 방안으로 하드웨어의 성능을 올리거나(Scale-up) 여러대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러대면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적이다. 이때 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드 밸런싱이다. 로드 밸런싱은 분산식 웹 서비스로, 여러 서버에 부하(Load)를 나누어주는 역할을 한다. Load Ba..

UDP 통신이란? User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 비연결형, 신뢰성 없는 전송 프로토콜이다. 데이터그램 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층이다. Transport layer에서 사용하는 프로토콜. TCP와 UDP는 왜 나오게 됐는가? 1. IP의 역할은 Host to Host (장치 to 장치)만을 지원한다. 장치에서 장치로 이동은 IP로 해결되지만, 하나의 장비안에서 수많은 프로그램들이 통신을 할 경우에는 IP만으로는 한계가 있다. 2. 또한, IP에서 오류가 발생한다면 ICMP에서 알려준다. 하지만 ICMP는 알려주기만 할 뿐 대처를 못하기 때문에 IP보다 위에서 처리를 해줘야 한다. 1번을 해결하기 위하여 포트 번호가..

힙(Heap) 알아야할 것 1.힙의 개념 2.힙의 삽입 및 삭제 힙은, 우선순위 큐를 위해 만들어진 자료구조다. 먼저 우선순위 큐에 대해서 간략히 알아보자 우선순위 큐 : 우선순위의 개념을 큐에 도입한 자료구조 데이터들이 우선순위를 가지고 있음. 우선순위가 높은 데이터가 먼저 나감 스택은 LIFO, 큐는 FIFO 언제 사용? 시뮬레이션 시스템, 작업 스케줄링, 수치해석 계산 우선순위 큐는 배열, 연결리스트, 힙으로 구현 (힙으로 구현이 가장 효율적!) 힙 → 삽입 : O(logn) , 삭제 : O(logn) 힙(Heap) 완전 이진 트리의 일종 여러 값 중, 최대값과 최소값을 빠르게 찾아내도록 만들어진 자료구조 반정렬 상태 힙 트리는 중복된 값 허용 (이진 탐색 트리는 중복값 허용X) 힙 종류 최대 힙(..
스택(Stack) 입력과 출력이 한 곳(방향)으로 제한 LIFO (Last In First Out, 후입선출) : 가장 나중에 들어온 것이 가장 먼저 나옴 언제 사용? 함수의 콜스택, 문자열 역순 출력, 연산자 후위표기법 데이터 넣음 : push() 데이터 최상위 값 뺌 : pop() 비어있는 지 확인 : isEmpty() 꽉차있는 지 확인 : isFull() +SP push와 pop할 때는 해당 위치를 알고 있어야 하므로 기억하고 있는 '스택 포인터(SP)'가 필요함 스택 포인터는 다음 값이 들어갈 위치를 가리키고 있음 (처음 기본값은 -1) private int sp = -1; push public void push(Object o) { if(isFull(o)) { return; } stack[++s..

오라클 논리/물리적 구조 1. 오라클 DB의 논리/물리적 구조 논리적 구조 : 테이블 처럼 존재는 하지만 가져갈 수 없는 것 물리적 구조 : 이메일 파일 첨부와 같이 파일을 직접 만질 수 있는 것(리눅스에서 ls 통해 보여지는 파일들) - 테이블 스페이스 : 지역(땅 덩어리) - 세그먼트 : 건물 - extent : 건물의 층 - Datablock : 건물의 사무실 테이터 파일은 테이블 스페이스 안에 여러 개가 존재 할 수 있다. 조회할 테이블이 어느 테이블 스페이스에 속해 있는지 조회하는 방법 SQL> select table_name, tablespace_name 2 from dba_tables 3 where table_name='EMP'; TABLE_NAME TABLESPACE ------------..
- Total
- Today
- Yesterday