기타 정보: 169개의 글

제어단어와 선택신호 제어단어 - 선택신호(제어변수)의 묶음 - 제어단어는 처리장치로부터 전달받은 상태비트를 참고하여 제어장치가 만들게 됨 선택신호(제어변수) - 처리장치 내에서 수행되는 마이크로 연산을 선택하는 변수 - 처리장치의 버스, ALU, 시프터, 도착 레지스터 등을 제어 처리장치와 제어단어 아래와 같은 구조의 처리장치가 있다고 가정하자. 처리장치 블록도 레지스터 세트는 R1~R7의 7개의 레지스터로 구성되었다. 7개의 레지스터 출력과 외부기억장치로부터의 입력은 두 세트의 멀티플렉서가 선택하여 ALU의 입력으로 연결된다. ALU의 출력은 시프터를 통해 출력버스로 연결되어 도착 레지스터나 외부로 전송된다. 이러한 구조의 처리장치에는 모두 16개의 2진 제어변수가 있고(처리장치 구조에 따라 제어변수의..

BNF 표현법 BNF(Backus-Naur Form)는 Algol의 구문을 정의하기 위해 배커스(Backus)와 나우어(Naur)가 사용한 표현법이다. BNF 기호 메타 기호 BNF는 세 가지 메타 기호를 사용한다. 메타 기호 의미 ::= 정의 | 택일(OR) 비단말 기호 - BNF에서 규칙은 메타 기호 ::=를 이용하여 표현한다. - ::=를 기준으로 왼쪽을 오른쪽으로 정의한다. - ::=의 왼쪽에는 하나의 비단말 기호가, 오른쪽에는 기호들을 활용하여 정의하는 내용이 나와야 한다. 단말/비단말 기호 기호 의미 예 단말 기호 메타 기호 로 묶인 기호 , , , ... 비단말 기호 비단말 기호 및 메타 기호가 아닌 기호 A, B, a, b, 0, 1, if, then, +, -, ... BNF의 예 ::=..

프로그래밍 언어의 요구사항 소프트웨어 개발 및 유지보수 측면에서 프로그래밍 언어는 어떤 요구사항을 만족해야 할까? 먼저 프로그래밍 언어는 프로그래머가 자신의 아이디어를 쉽게 표현할 수 있게 해야한다. 또한 작성된 프로그램은 쉽게 유지보수 할 수 있어야 하며, 컴퓨터에서 빠르게 실행될 수 있어야 한다. (1) 표현 풍부성(expressiveness): 프로그래머의 아이디어를 쉽게 표현할 수 있다. (2) 유지 보수성(maintainability): 작성된 프로그램은 쉽게 유지보수할 수 있다. (3) 실행 가능성(executability): 작성된 프로그램이 빠르게 실행될 수 있다. 프로그래밍 언어의 설계 원칙 그리고 이러한 기능과 요구사항을 만족하기 위해 고려해야하는 설계 원칙 중 공통적으로 거론되는 것은..
프로그래밍 언어의 대표적인 평가 기준으로 다음의 9가지를 꼽을 수 있다. 평가 기준 의미 작성력 프로그램 수식이나 문장, 기능을 쉽게 표현할 수 있는 특성 가독성 작성된 프로그램을 보고 쉽게 이해할 수 있도록 하는 특성 신뢰성 작성된 프로그램이 오류에 빠지는 가능성을 줄이는 특성 직교성 언어 기능이 서로 간섭하지 않고 자유롭게 조합될 수 있는 특성 일관성 유사한 기능을 같은 형태로 나타낼 수 있는 특성 확장성 사용자가 원하는 새로운 기능을 추가할 수 있는 특성 효율성 작성된 프로그램이 효율적으로 수행될 수 있도록 하는 특성 유연성 프로그래머가 표현하고 싶은 내용을 유연하게 수용하는 특성 이식성 프로그램을 다른 실행 환경으로 이전할 수 있는 특성 작성력 프로그램 수식이나 문장, 기능을 쉽게 표현할 수 있는..

저를 포함한 많은 분들이 blocking과 synchronous, non-blocking과 asynchronous의 차이점을 명확하게 알지 못하는 것 같아, 이번 글에서는 위 개념들에 대해 공부하면서 이해한 것들을 공유해보려고 합니다. (혹시나 잘못 설명하고 있는 점이 있다면 언제든 댓글 달아주세요.) 결론부터 말씀드리면, 두 개념(Blocking & Non-Blocking / Synchronous & Asynchronous)는 각각 제어권과 결과값을 초점으로 두고있습니다. 글만으로는 이해가 안될 것 같아 예제 코드를 가져와봤습니다. 예제 코드는 이름과 나이로 player를 찾고, (중복은 없다고 가정하겠습니다.) 해당 player가 성인이라면 player를 return하는 간단한 코드입니다. Block..

이번 글에서 parallelism과 concurrency에 대해 정리해보겠습니다. 먼저 각각의 개념의 정의는 다음과 같습니다. 병렬 컴퓨팅(parallel computing) 또는 병렬 연산은 동시에 많은 계산을 하는 연산의 한 방법이다. 병행성(concurrency)은 컴퓨터 과학에서 여러 계산을 동시에 수행하는 시스템의 특성 뭔가 차이는 있어보이지만 직관적이지는 않은 것 같습니다. 조금 더 명확하게 차이를 설명하기 위해 그림을 하나 가져왔습니다. 위 예시에서 우리는 두 가지 작업(task)을 수행합니다. 각각의 작업은 3 단계의 연산으로 이뤄져있습니다. concurrency에서는 하나의 core에서 작업의 관점에서는 두 작업을 동시에 수행하지만 연산의 관점에서는 두 연산을 번갈아 수행하는 것을 알 수..

버퍼 플러시는 데이터를 임시 저장소에서 영구적인 데이터 저장소로 전송하는 것을 말합니다. 출처: https://engkimbs.tistory.com/562?category=688962 [새로비]

분산 시스템은 단일 시스템에서 처리하기 불가능한 요구사항을 충족시키기 위해 독립적인 여러 컴퓨터를 네트워크로 묶어서 만든 시스템입니다. 이러한 분산시스템은 단일 노드로 처리하기 힘든 비즈니스 요구사항을 충족시키기 위해서 나온 개념입니다. 엄청나게 커져가는 데이터와 트래픽을 처리하려면 단일 컴퓨터에서는 스펙을 높여 컴퓨팅 파워를 높여야 합니다. 이를 스케일업(Scale-Up)이라고 합니다. 하지만 이러한 방식은 큰 문제점에 부딪치게 됩니다. 일단 스펙을 높이기 위한 가격이 어마어마 하게 높아집니다. 보통 수천만원 이상은 우습고 억 단위 이상까지 가는 경우가 비일비재하죠. 그리고 물리적으로도 큰 문제가 있을 수 밖에 없습니다. 슬롯이 다 채워지면? 하드웨어 아키텍처 상에서 한계에 도달하면? 이런 문제를 해결..

멀티미디어 또는 다중 매체는 Multum과 Medium을 합친 낱말이며, 여러 형식의 정보 컨텐츠와 정보 처리 방식을 사용하여 사용자에게 정보를 제공하고 즐거움을 주는 미디어를 뜻한다. 출처: https://engkimbs.tistory.com/453?category=688962 [새로비]

쿠키(Cookie)란 하이퍼텍스트 기록서(HTTP)의 일종으로 인터넷 사용자가 어떠한 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 인터넷 사용자의 컴퓨터에 남기는 기록 정보 파일을 말합니다. HTTP 쿠기, 웹 쿠키, 브라우저 쿠키라고도 합니다. 이 기록 파일은 사용자가 같은 웹사이트에 방문할 때마다 읽히고 수시로 새로운 정보를 갱신합니다. 오늘날 많은 서버 및 웹사이트들이 브라우저의 신속성을 위해 즐겨 쓰고 있죠. 쿠키는 요청 및 응답하는 과정에 포함되는 텍스트 정보이고 쉽게 구현하여 사용할 수 있는 방법 중에 하나입니다. 일반적인 브라우저에서 최대 4KB의 텍스트 정보를 담을 수 있으며 하나의 사이트는 20개만 허용됩니다. 또한 모든 사이트를 통틀어서 300개로 제한되죠, 만약 이 범..