네트워크 구조
  : 컴퓨터, 단말, 통신회선망의 기능 배분을 최적화하여 컴퓨터 통신망의 효율적인 구축을 도모하기 위해
    기본 구조 또는 그에 관한 기술

네트워크의 논리적 구성요소
  1. 사용자 프로세스(User Process)
      : 정보처리나 통신을 하는 장치를 모델화
  2. 노드(Node)
      : 원격처리장치 혹은 교환기를 모델화
  3. 링크(Link)
      : 일반적으로 통신회선, 즉 전기신호를 운반하는 매체를 모델화


네트워크의 구성 형태

  1. Mesh형(망형)=Fully conected
     - 보통 공중 데이터통신 네트워크에서 주로 사용되며, 통신 회선의 총 경로가 다른 네트워크에 비교하여 가장 길다
     - node의 연결성이 높고 많은 단말기로부터 많은 양의 통신을 필요로 하는 경우에 유리하다
     - 좋지만 비용이 많이 든다
     - 모든 노드를 망형으로 연결하는 경우

             필요한 회선 = n(n-1) / 2 


  2. Star형(성형, 중앙 집중형)
     - 중앙에 서버 컴퓨터가 모든 클라이언트를 관리하는 방식
     - 중앙 컴퓨터가 고장나면 모든 클라이언트가 마비가 되는 단점이 있다.

  3. Ring형(루프형)
     - 데이터는 한쪽 방향으로만 흐르고 병목현상이 드문다
     - 양쪽 방향으로 접근이 가능하여 통신 회선 장애에 대한 융통성이 있다
     - 한노드(nod)가 절단되어도 우회로를 구성하여 통신이 가능하다
     - 컴퓨터를 한대 추가하기 위해서 선을 끈어야 하는 단점이 있다
  
  4. Bus형
     - 한 개의 통신 회선에 여러 대의 단말 장치가 연결
     - 단말 장치가 고장 나더라도 통신망 전체에 영향을 주지 않으므로 신뢰성이 높음

  5. Tree형(계층형, 분산형)
     - 분산 처리 시스템을 구성하는 방식
     - 실제 사용하는 허브의 사용 방식

회선 구성방식

  1. 포인트 투 포인트(점 대 점, Point-to-Point)방식
     - 중앙 컴퓨터와 단말기를 독립적으로 연결하는 방식
     - 중앙 컴퓨터와 단말기 간 언제든지 데이터 전송이 가능
     - 전용 회선 또는 교환 회선에 이용
     - 망 연결 형태 중 성형(Star)으로 구성 시 사용

  2. 멀티 드롭(멀티 포인터, Multi-Drop)방식
     - 다중화기와 다중화 기법이 필요
     - 여러대의 단말기들을 하나의 통신 회선에 연결하는 방식
     - 전용 회선을 사용
     - 망 연결 형태 중 버스형으로 구성 시 사용

  * 멀티 드롭 선로에 연결 할 수 있는 단말기의 수를 결정하는 요인
    - 선로의 속도
    - 단말기에 의해 생기는 교통량
    - 하트웨어 소프트웨어의 처리 능력

  3. 다중화 방식(Line Multiplexing)
     - 여러 대의 단말기들을 다중화 장치를 이용하여 중앙 컴퓨터와 연결하는 방식
     - 통신회선의 고장 시 고장지점 이후의 터미널은 모두 운영 불능에 빠지는 단점이 있음


회선 제어 방식

  1. 경쟁(Contention)방식
     - 다중화 기법이 개발되기 전 방식으로 서로 경쟁하는 방식으로 먼저 한쪽이 송신권을 갖는 방식
     - 회선 제어 방식 중 가장 간단한 형태
     - Point-to-Point회선으로 접속되어 있어 관계가 대등한 단말에 많이 시용
     - 대표적인 시스템으로 ALOHA가 있음

  2. 폴링과 셀렉션(Polling & Selection)방식
    ① 폴링(Polling)
       - 데이터 통신에게 컴퓨터가 단말기에게 전송할 데이터의 유무를 묻는 방식
       - 쉽게말해 서버가 제어권을 가지고 각 단말기에 보낼 파일의 유무를 묻고 송신권을 주는 방식
    ② 셀렉션(Selection)
       - 멀티 포인트 방식에 있어서 중앙컴퓨터가 주변의 터미널로 데이터를 전송하고자 하는 경우
          수신측 터미널의 상태를 확인하는 절차
       - 쉽게말해 서버가 제어권을 가지고 각 단말기에 파일을 받을 준비가 됬는지 묻고 데이터를 보내는 방식

교환회선(Switched Line)
  1. 교환기에 의해서 연결되는 방식
  2. 전용 회선에 비해 전송 속도가 느림
  3. 전용할 데이터 양이 적고, 회선 사용 시간이 짧을 때 효율적
  4. 교환기를 거쳐서 전송하는 방식

전용 회선(Leased Line)
  1. 회선이 단말기 상호 간에 항상 고정되어 있는 회선방식
  2. 전송 속도가 빠르고 전송 에러가 적음
  3. 전송할 데이터 양이 많고, 회선 사용 시간이 길 때 효율적
  4. 직통회선(Point-to-Point)방식과 분기 회선(Multi-Point 혹은 Multi-Drop)방식이 있음
  5. 직접 연결되어 직통으로 전송하는 방식


네이버에서 이런 이벤트를 하다니.. 매일 들어갔는데 이제서야보고 살짝 참여해본다..
안그래도 내컴이 좀 연륜이 있어서 요즘 노트북이나 하나 사고싶다는 마음은 있었는데,
벌써부터 당첨된거 같은 기분이다 ^^ 

밑져야 본전, 아이스크림이라도 걸리겠지~
선점형 기법
  - 프로세스가 CPU를 사용중이어도 우선순위가 높은 프로세스가 생기면
     CPU를 강제로 빼앗아 사용 가능하게 하는 스케줄링 기법
  - 우선순위가 높은 프로세스를 빠르게 처리
  - 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용

SRT(Shortest Remaining Time)
  - SJF를 선점형으로 변경한 기법
  - 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여
     짧은 프로세스에게 CPU를 할당하는 기법

RR(Round Robin)
  - 시분할 시스템을 위해 고안
  - FIFO기법을 선점형태로 변형
  - 할당되는 시간(CPU할당시간)이 클 경우 FIFO기법과 같아짐
  - 할당 시간이 작을경우 오버헤드, 문맥교환 발생
    * 그이유는 할당 시간이 작을 경우 CPU에 계속 들어갔다 나왔다를 반복하기 때문이다
    * RR에서 Time slice(시간분배)를 길게 줄 경우 FIFO와 같아진다.

MLQ(=MQ; Multi-Level Queue) - 다단계 큐
  : 큐를 상중하 3개를 만들어서 중요 큐부터 처리하는 기법
    상은 시스템, 중은 대화형, 하는 일괄처리 프로세스를 처리

MFQ(Multi-level Feedback Queue) - 다단계 피드백 큐
  - 단계별로 일정 시간을 분배하여 상위에서 한번돌고 처리되지 않은 레지스터는
     중위로 중위는 하위로 하위는 계속 도는 형식의 기법
  - 상, 중은 FIFO방식으로 처리되고 하는 RR방식으로 처리 된다.

 FCFS(First Come First Service)
  - 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
  - 먼저 도착한 것이 먼저 처리되는 FIFO방식
  - 대화식 시스템에 부적합

SJF(Shortest Job First)
  - 실행시간이 가장 짧은 프로세스 부터 CPU할당
  - 가장 적은 평균 대기시간을 제공하는 최적의 알고리즘
   * 하지만 실행시간이 긴 프로세스는 할당 순위가 밀려 무한연기 상태 발생

HRN(Hightest Response-ratio Next)
  - SJF기법을 보완하기 위해 대기시간과 서비스 시간을 이용하는 기법

우선순위 = (대기시간+서비스시간) / 서비스시간

   * 대기시간이 길면 우선순위도 높아진다
   * Aging 기법 : 대기시간을 고려한 기법(무한연기 방지)

기한부(Deadline)
  - 시간을 부여하고 시간이 지나면 프로세스가 소멸

우선순위(Priority)
  - 우선순위를 프로세스의 종류나 특성에 따라 다르게 부여

프로세스 스케줄링(Scheduling)
  - 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에 할당하는 작업
  - 프로세스가 실행되기 위해  CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업
   * 하나의 프로세스를 준비(Ready)상태에서 실행(Run)상태로 전이시킴

비선점형 스케줄링
  - FCFS(First Come First Service)=FIFO
  - SJF(Shortest Job First)
  - HRN(Hightest Response-ratio Next)
  - 기한부(Deadline)
  - 우선순위(Priority)

선점형 스케줄링
  - SRT(Shortest Remaining Time)
  - RR(Round Robine)
  - MLQ(Multi-Level Queue, 다단계 큐)
  - MFQ(Multi-level Feedback Queue, 다단계 피드백 큐)

프로세스 스케줄링의 목적
  1. 처리율 증가
  2. CPU이용률 증가
  3. 오버헤드 최소화
  4. 응답시간 최소화
  5. 반환시간 최소화
  6. 대기시간 최소화

교착상태(DeadLock)
  - 상호 배제에 의해 나타나는 문제
  - 둘 이상의 프로세스가 자원을 점유
  - 다른 프로세스가 무한정 기다리는 현상
  - 스타베이션 현상이라고도 한다

교착상태 발생조건
  1. 상포배제(Mutual Exclusion)
  2. 점유 및 대기(Hold and Wait)
  3. 비선점(Non-Preemption)
    * 선점(Preemption)이란 쉽게말해 운영체제를 제어하는 힘을 말한다.(교착상태를 막을 수 있다)
  4. 환형 대기(Circular Wait)
      : 프로세스가 자신이 가진 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구하는 것

회피기법(Avoidance)
  1. 은행원 알고리즘(Banker's Algorithm)
     - E. J. Dijkstra가 제안
     - 각 프로세스에 자원을 할당하여 교착상태가 발생하지 않고 모든 프로세스가 완료될 수 있는 상태를 안정상태,
        교착상태가 발생할 수 있는 상태를 불안정 상태라 한다.
     - 자원의 양과 사용자(프로세스)수가 일정해야 한다.
병행 프로세스(Concurrent Process)
  : 여러개의 프로세스가 동시에 실행상태에 있는 것을 의미한다.

임계구역(Critical Section)
  - 여러 프로세스가 공유하는 Data 및 자원을 한 프로세스만 쓸수 있게 공유
  - 특정 프로세스가 독점할 수 없다
  - 규칙 : 한 프로세스가 자원을 반납한 후 다른 프로세스가 사용가능

상호 배제 기법(MUTEX; Mutual Exclusion)
  - 공유 자원은 한 프로세스만 사용하게 하고 다른 프로세스가 접근 못하게 제어
  - 여러 프로세스가 동시에 자원 공유시 각 프로세스가 번갈아 가며 사용하게 하므로 임계구역을 유지
  - DeadLock이 일어나지 않게 하기 위해서 꼭 필요하다.

동기화 기법(Synchronization)
  - 두개 이상의 프로세스를 동시에 처리할 수 없기 때문에 각 프로세스의 처리 순서를 결정하는 것
  - 상호배제의 한 형태이다
  - 동기화를 구현할 수 있는 방법에는 세마포어와 모니터가 있다.

  1. 세마포어(Semaphore)
     - 다익스트라(E. J. Dijkstra)가 제안하였으며, 수신호 깃발을 뜻한다.
     - S는 P와 V 2개의 연산에 의해 동기화를 유지한다.

      * S가 0일때 사용중, 1일때 사용가능한 상태이다
         한개의 프로세스가 들어갈때 S=S-1이라는 P연산으로 사용중을 나타내고
         사용이 끝나면 S=S+1이라는 V연산으로 사용가능하게 바꾸어 준다.

  2. 모니터(Monitor)
     - 모니터 내의 공유자원을 사용하려면 반드시 모니터의 진입부를 호출해야 한다.
     - 모니터 경계에서 상호배제가 시행된다.
     - Wait와 Signal 연산이 사용된다.
     - 화장실의 잠금장치와 비슷한 개념이다.
프로세스(Process)의 정의
  - PCB를 가진 프로그램
  - 실행중인 프로그램
  - 실기억장치(RAM)에 저장된 프로그램(HDD에 저장된게 아니다)
  - CPU가 할당되는 실체
  - 비동기적 행위를 일으키는 주체(언제 어느때 실행할지 모르니 비동기적이다)


PCB(Process Control Block)란
  : CPU에게 주는 해당 Process에 대한 정보를 담은 블록


PCB의 저장 정보
  - Pointer : 프로세스 식별자 ID
  - Process State : 프로세스의 현재 상태
  - Process Number : 프로세스의 우선순위, 스케줄링
  - Program Counter : 프로그램의 위치
  - Registers : CPU레지스터 정보
  - Memory Limits : 기억장치 관리정보
  - List of Open Files : 입출력정보
  - 부모자식 프로세스 포인터 : 해당 처리 후 따라 처리 되야 하는 프로세스 정보


프로세스의 상태 전이



  - 준비(Ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  - 실행(Run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  - 대기(Block) : 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고 입출력이 완료될 때까지 대기하는 상태
   * 대기단계가 끝나면 다시 실행단계로 가지 않고 준비단계로 가게된다.
   * 할당받은 시간이 모두 소진되면 작업 중이어도 Time Out후 다시 Dispatch된다.

+ Recent posts