[소프트웨어공학] NS(Nassi-Schneiderman) 차트 NS(나씨 슈나이더만) 차트 모듈 명세서를 글로 쓸수도 있지만 N-S차트로 그림으로 그릴 수 있다. 플로우차트는 생각보다는 사용횟수가 많지 않다. 손으로 그리기가 까다롭기 때문이다. 이에 비해 NS차트는 더 쉽게 그릴 수 있어 생각을 더 쉽게 정리할 수 있다. 물론 NS차트만으로 모든것이 해결되는것은 아니다. 프로그램은 정해진 일을 정해진 방법으로 하도록 컴퓨터에 명령을 내리는 것이다. 컴퓨터는 정해진 일과 정해진 방법이 무엇인지 알수 없다. 왜냐하면 기계니까 따라서 우리는 두 가지 관점에서 프로그램을 만들어 갈 수 있다. 1. 무엇을 해야 하는지 생각해보기 컴퓨터에게 시킬일이 무엇이며 어떤 결과를 받아 보고 싶은지 정리 2. 어떻게 해야 하는지 생각해보기 사용자로부터 입력이 되는것과 입력없이 알 수 있는것들 가지고 어떤 처리를 어떤 순서로 진행해서 결과를 만들지 NS차트는 어떻게 원하는 결과를 얻을 수 있는지를 정리해 볼 수 있는 도구이다. NS차트 구성요소는 처리, 반복, 분기의 일반적인 프로그래밍 언어의 구성요소를 표현할 수 있다. 먼저 순차처리 네모 박스에 입력, 출력, 연산을 기록한다. 선택구조는 IF문이나 CASE문을 사용하여 처리 흐름을 기록한다. 반복구조는 While문이나 For문을 사용하여 조건에 따른 반복처리를 기술한다. 1에서 100까지 합을 구하는 ns차트 NS차트의 특징 논리의 기술에 중점을 둔 도형을 이용한 표현 방법이다. 그리기가 어렵다.(전문성이 있어야 잘 그린다) 순차, 선택, 반복으로 표현한다. 임의의 제어 이동이 어렵다. goto구조가 어렵다. 그래픽 설계 도구이다. 상자 도표라고도 한다 프로그램으로 구현이 쉽다. 조건이 복합되어 있는 곳의 처리를 명확히 식별하기에 적합하다. if문이 여러개일 때 가능 ...
[운영체제] MLQ & MFQ 다단계 큐 (Multi-Level Queue) 스케줄링 FIFO + RR 스케줄링 각 작업들을 서로 다른 묶음으로 분류할 수 있을 때 사용하는 알고리즘 ex) 작업을 전면 작업(대화형, Foreground Task) 과 후면작업(일괄처리형, Background Task) 으로 분류한다면 두 유형의 요구 반응 시간이 다르므로 서로 다르게 스케줄링해야합니다. 더욱이 전면 작업은 후면 작업에 비해 높은 우선순위를 갖는 경우가 많습니다. ex) 쇼핑몰에서 쇼핑은 빠르게 백그라운드에서는 다운로드는 느리게 다단계 큐 스케줄링 알고리즘은 준비상태 큐를 종류별로 여러 단계로 분할해 둡니다. 그리고 작업을 기억 장치의 크기나 프로세스의 형태에 따라 어느 한 큐에 지정합니다 각 큐는 자신만의 독자적인 스케줄링 알고리즘을 갖고 있습니다. 예를 들어, 전면 작업과 후면 작업이 분할된 큐에 지정되면 전면 작업 큐는 순환 할당 알고리즘에 의해 스케줄링 되고 후면 작업 큐는 선입 선처리로 스케줄링 됩니다. 또한 큐 사이에도 스케줄링이 있어야 하는데 이것은 고정된 우선순위의 선점식 스케줄링 입니다. 예를 들어, 전면작업 큐는 후면작업 큐 보다 절대적인 우선순위를 가질 수 있습니다. 큐 5개를 가진 다단계 큐 스케줄링 알고리즘 각 큐는 순서대로 절대적인 우선순위를 가집니다. 예를 들어, 시스템 프로세스, 대화식 프로세스, 그리고 대화식 편집 프로세스를 위한 큐들이 모두 비어 있어야 일괄처리 큐에 있는 프로세스가 실행됩니다. 일괄처리 프로세스가 실행되는 동안에 대화식 편집 프로세스가 준비 큐에 들어오면 일괄 처리 프로세스는 프로세서를 반납해야 합니다. 또한 큐들 사이에 시간을 나누어 사용할 수도 있습니다. 각 큐는 프로세서 시간의 일정량을 받아서 큐에 있는 프로세스들을 스케줄링 할 수 있습니다. 다단계 피드백 큐 (Multi-Level Feedback Queue) 스케줄링 입출...
[컴퓨터네트워크] 표본화 & 양자화 & 부호화 Analog to Digital Conversion A/D 변환을 해야 하는 이유? 우리 주변에 일어나는 물리량들(온도, 빛, 속도 등)은 모두 시간에 대해 연속적인 아날로그 양 입니다. 애석하게도 컴퓨터는 아날로그를 알아들을 수 없고 디지털 언어만을 알아들을 수 있습니다. 때문에 컴퓨터에게 입력값을 이해시키기 위해 아날로그를 디지털로 변환해주는 ADC(아날로그 디지털 변환기) 라는 장치가 필요합니다. ADC(Analog-to-Digital Converter) 아날로그 신호에서 디지털 신호로 바로 딱 변환되는게 아니라 표본화, 양자화, 부호화라는 방식을 거쳐 디지털 신호로 변환합니다. 표본화(Sampling) 일정한 간격으로 아날로그 신호의 값을 추출하는 과정입니다. (연속 시간 신호로 하여금 샘플을 하나씩 추출한다고 하면 이해가 됩니다.) 표본화를 함으로써 연속적인 아날로그 시간이 이산 시간 신호로 나타나게 됩니다. (이산시간 신호 : Discrete time signal 뜻 그대로 별개의 시간 신호) 왼쪽이 아날로그 신호, 오른쪽이 샘플링 한 것입니다. 샘플링을 많이 하게 된다면? 아날로그 신호와의 일치성은 커지나, 대신에 그 만큼 샘플링을 많이 했으니 디지털 데이터의 양도 늘어납니다. 일반적으로 샘플링을 N배 늘리면, 데이터의 양도 N배로 늘어난다고 보시면 됩니다. 양자화(Quantization) 양자화는 추출한 샘플링 신호의 레벨을 몇 단계로 나타내는 과정입니다. 샘플링된 값을 구간별(y축)로 구분하고, 각 구간의 대푯값으로 치환합니다. 부호화(Coding) 부호화는 양자화로 나눈 레벨에 속한 값을 이진수로 변환하는 과정입니다. 각 구간별로 이진 부호를 할당하고 각 샘플을 이진 부호로 변환하면 끝입니다. 샘플링된 첫 번째부터 구간 3인 이진 값 11에 위치해있으니...
댓글
댓글 쓰기