분류 전체보기 532

[소프트웨어공학론] Software Architecture

* Software Architecture - System을 구성하는 Sub-System을 분할 및 제어법, 통신법 식별 - 대부분의 System은 최초로 개발되는 것이 없다. > 이미 Architecture가 framework식으로 존재 - 본 단계의 결과물은 Software Architecture Design이다. - 본 단계는 요구사항과 앞으로 일어나는 활동의 연결부분으로 중요한 역할을 한다. - 본 단계는 Specification과 동시에 발생한다. - 아키텍쳐는 큰 관점(in the large)으로 System, 독립적프로그램, 각 System간의 관계등을 정의 작은 관점(in the small)으로 클래스, 컴포넌트, 클래스 간의 관계등을 정의한다. - 장점 > stakeholder commu..

[소프트웨어공학론] System modeling

* System modeling - 시스템을 서로 다른 관점에서묘사한 추상적 모델(Abstract models) - 사용처 > Analysts : 시스템의 기능 이해 > 고객과 의사소통 - 일반적으로 UML(Unified Modeling Language)를 통해서 묘사 * 시스템 관점 ⓐ An external perspective(외부적 관점) : 어디까지가 시스템인지를 구분 ⓑ An interaction perspective(상호적 관점) : 시스템의 상호 작용을 정의 ⓒ A structural perspective(구조적 관점) : 시스템의 구조를 표현 ⓓ A behavioral perspective(행동적 관점) : 시간에 따라 어떻게 움직이는 가를 표현 * UML diagram - Type ⓐ A..

[네트워크] Link Layer

* Link Layer - 물리 계층과 연관이 있다. > 물리 계층 : 보내는 측은 메세지를 전자기 신호로 변경하여 전달하는 역할(Encoding)을 하고, 받는 측은 전자기 신호를 메세지로 변경하는 역할(Decoding)을 한다. - Packet을 전달할때 각 Packet의 처음과 끝을 알아야한다. > 각 node는 packet을 처음과 끝을 알 수 있어야 한다. > 이는 Link layer의 주 역할이다. 처음과 끝에 경계를 붙여서 전송하는 정보단위를 frame이라고 한다 - Link layer는 Packet의 처음과 끝을 표시하는 역할 뿐만아니라, 에러제어와 흐름제어도 담당한다. * 경계를 구분하는 방법 - 경계를 구분하는 방법으로는 프래임의 시작과 끝에 특정문자 혹인 Bit patter을 적용한다..

[하드웨어] Assembly Part 1 (IA-32)

* Assembly Language - Integer Constant : 부호와 하나이상의 숫자 + 접미에 진수가 붙음(radix) [{+|-}] digits [radix] [radix] > h | r | q | o | t | d | y | b > h : hexa, r : encoded real, q or o : octa, t : decimal(alterute) d : decimal, y : binary(alterate), b : binary ※ 16진수는 변수와의 구분을 주기 위해서 만앞에 0을 붙여준다. ※ 만약 radix가 없다면 10진수로 생각!! ex) 26 decimal / 32q octa / 1101b binary / 0A2h hexa - Integer Expression : 정수 값과 산술..

[네트워크] Routing

* AS(Autonomous System) - Routing 관점에서 인터넷은 여러개로 쪼개져 있다. - 이 각각의 단위를 AS라고 한다. > 여기서 AS란? 하나의 관리기관에 소속된 Network 라우터들의 집합을 말한다. ex) KT AS망, SKT AS망이 존재할 것이다. - 각각의 AS는 고유한 IP주소를 갖고 있다. - 하나의 AS내에서는 동일한 라우팅 Protocol을 사용한다.(IGP) - AS간의 routing Protocol은 EGP이다. - IGP는 RIP과 OSPF로 분류되는되 사용되는 알고리즘에 따라서 불리는게 달라진다. - EGP는 BGP라는 것이 있다. - 위의 그림에서와 같이 AS간의 routing protocol은 대표 router가 담당하므로, 모든 router가 두개의 방..

[OS] Process Synchronization

* Shared Memory에서 발생하는 문제 - Concurrency : 하나의 공유 데이터에 동시 접근할 때 발생하는 문제 (데이터가 비일관적이다. data inconsistency) > 이러한 문제를 해결하기 위해서 협동하는 process에서의 실행순서가 중요한 문제로 작용. - Circular array로 구현시 저장공간을 100% 사용이 불가능하다. > counter변수를 생성하여 process숫자를 관리한다. - producer와 consumer가 동시에 동작을 한다면 실행순서에 따라 다른 결과가 나올 수 있다. 이런 경우를 race control이라고 한다. 또한 이로 인해 발생하는 문제를 critical section problem이라고한다. * Critical Section problem..

[OS] CPU Scheduling(Sort-term Scheduling) Part 2

* Multilevel Queue - Queue를 여러개로 나눠서 관리. Queue끼리의 process 이동을 금지. ex) Ready queue를 두개로 분할 Q에 대한 대답 ⓐ Fixed priority scheduling : foreground에 process가 있다면 무조건 foreground것부터 실행 ⓑ foreground 80%, batch 20% : 이와 같이 비율로 나눠서 실행 > 2가지의 방법이 발생하며, ⓐ의 경우에 starvation문제가 발생한다. 이 starvation을 해결하기 위해서 Multilevel feedback queue가 탄생 * Multilevel Feedback queue - starvation을 방지하기 위해 aging효과를 준다. - aging이 올라가면 pr..

[OS] CPU Scheduling(Sort-term Scheduling) Part 1

* First Come First Served(FCFS) - 들어오는 순서대로 실행하는 가장 간단한 스케쥴링 법 - Non-Preemptive ex) Waiting Time : P1 = 0, P2 = 20, P3 = 25 Average Waiting time = ( 0 + 20 + 25 ) / 3 = 15 * Shortest -Job-First(SJF) - ready queue에 존재하는 process들의 Burst Time을 미리 추측가능해야한다. - SJF는 평균 대기시간을 가장 짧게 해주는 최적의 알고리즘이다. 그러나, CPU brust time을 추측해야 한다. > Process의 다음 burst time 추측은 다음에 의거한다. Tn+1 = a*tn + (1-a)Tn T : 추측시간 / t : ..

[OS] CPU Scheduling(Sort-term Scheduling) Basic

* CPU의 사용을 최대화 하는 것이 목표 * CPU의 상태는 2단계에서 머문다.(CPU 계산 or I/O대기) - 두 단계의 CPU Burst가 순환하면서 발생 * 전체적인 performance를 높이기 위해서 CPU scheduler는 ready queue에 있는 process중 하나를 선택할 수 있다. * CPU Scheduler가 발생하는 시기 ⓐ running > waiting ⓑ running > ready ⓒ waiting > ready ⓓ running > terminated - ⓐ, ⓓ번은 process가 자발적으로 이동을 실시한다. - ⓑ, ⓒ번은 process가 외부에 의해 타의적으로 발생한다. ⓑ, ⓒ과 같은 사건이 발생하기 위해서는 다음과 같은 조건이 필요하다. (Preemptiv..