CS(18)
-
CS : 락
단기 락 구현 락을 구현하는 방법은 실제로는 하나뿐이지만, 이를 프로그램에 표현하는 방법은 여러 가지이다. 락을 구현하려면 잠금을 지원하는 특별한 명령어를 제공하는 하드웨어 지원이 필요하다. 여러 프로세서가 락에 사용하기 위한 검사 후 설정이라는 명령어를 제공한다. 이 명령어는 원자적 명령어로, 어떤 메모리 위치에 들어 있는 값을 1로 설정하고, 원래 그 위치에 들어 있던 값을 돌려준다. 처음에 이 메모리에는 0이 들어 있어야 한다. 이제 둘 이상의 프로세스가 이 명령어를 사용하면, 그중 한 프로세스의 검사 후 설정 명령어는 0을 반환하지만 나머지 프로세스의 검사 후 설정 명령어는 1을 반환한다. 이 명령이 원자적 명령어이기 때문에 어떤 츠로세스가 0을 반환 받았다면 이 프로세스에 의해 메모리 내용이 1..
2022.03.02 -
CS : 벡터를 사용한 I/O
데이터베이스 2진 트리는 데이터를 메모리에 저장할 때는 훌륭한 방법이지만, 메모리 안에 들어 갈수 없는 큰 데이터는 잘작동하지 않는다. 데이터베이스는 정해진 방식으로 조직화된 데이터 모음입니다. '데이터베이스 관리 시스템(DBMS)'은 데이터베이스에 정보를 저장하고 읽어올 수 있게 해주는 프로그램입니다.(mysql, mongodb등) DBMS는 보통 맨 아래의 데이터 저장 메커니즘을 감싼 여러 계층의 인터페이스로 구성된다. 데이터베이스는 B트리방식을 사용한다. B트리방식은 2진트리는 2개의 가지를 가지는 것과 다르게 여러 가지(자식)을 가진다. B트리로하면 검색시간을 단축 시킬수 있다. 노드에 저장하는 키 수가 더 많으면 노드를 디스크에서 더 적게 읽어 올 수 있다. 한디스크에서 한 노드를 불러오는 방식..
2022.03.02 -
CS : 휴먼 인터페이스 장치
컴퓨터는 대부분의 시간을 컴퓨터끼리 메세지를 주고받는데 사용하고, 가끔 다른사람에게 이야기한다. 이번 절에서는 컴퓨터가 사람과 상호작용하는 방법을 본다. 터미널 얼마 전까지 만해도 현재 사용중인 키보드, 마우스, 디스플레이나 터치스크린은 상상하기 힘든 물건들이었다. 종이에 특별히 정해진 코딩양식으로 데이터나 프로그램을 기록해야만 컴퓨터와 의사소통할 수 있었던 시절이 있었다. 이런 코딩 양식은 누군가에게 가져가면 이 사람은 '키펀치'를 사용해 양식을 펀치카드 뭉치로 만들어 줬다. 이 카드뭉치를 컴퓨터 오퍼레이터에게 건네면 오퍼레이터는 카드 뭉치를 카드 리더에 넣어 컴퓨터가 읽게 해서 프로그램을 실행했다. 이런 방식을 '배치 프로세싱' 이라고 한다. 컴퓨터가 점점 빨라지고 작아지면서(자동차정도의 크기) 사람..
2022.03.02 -
CS : 포르시저,서브루틴,함수
함수 함수(또는 프로시저나 서브루틴)은 엔지니어,개발자들이 똑같은 코드를 반복작성하는일을 피하고자 만든 코드를 재사용하는 주요 수단이다. cube라는 이름의 함수 function cube(x) { return x; } x는 cube함수의 파라미터 값이다. 함수의 멋진점은 cube를 여러번 작성하지 않아도 여러번 호출할수 있다는 점이다. 함수는 주소값을 가진다. 함수가 호출되었을때 값을 출력(또는 반환) 해줄 반환주소를 가지고 있어야 한다. 이러한 주소값들이 있기 때문에 컴퓨터적으로는 많은 작업이 필요한데, 이를 위해 ARM프로세서에서 '링크 레지스터를 사용해 분기'(Branch with Link) 명령어를 활용해 함수를 호출하는 명령어와 현재명령어의 다음위치를 저장해 하나로 합친다. 스택 함수가 다른함수..
2022.03.02 -
CS : 비트를 처리하기 위한 하드웨어
이번 단에서는 하드웨어를 만드는 방법에 대해 공부한다. 바로 현대적인 전자적 구현 기술로 들어가면 어렵기에 역사적인 기술을 설명하면서 점차 복잡한 기술로 나아갈 것이다. 릴레이 전기가 컴퓨터에 필요한 동력을 공급하는데 쓰이기 시작한것은 전기가 발명된 후 얼마 지나지 않아서 이다. 전기와 자기 사이에는 편리한 관계가 있다. 바로 코일에 전기를 흐르게하면 전자석이 되는 점이다. 이를 이용한것은 전기를 이용해 자동으로 움직이는 스프링쿨러가있다. 릴레이(계전기라고도 부름)는 스위치를 움직이기 위해 전자석을 사용하는 장치이다. [단극 쌍투 릴레이 스키매틱 기호] 코일에 전력이 들어가지 않았을 때에 상태에따라 열려있으면 '평상시 열린 릴레이' 닫혀있으면 '평상시 닫힌 릴레이 라고 한다. 중간의 철(금속)부분은 코일..
2022.03.02 -
CS : 비트 그룹의 이름
비트 그룹의 이름 컴퓨터는 제대로 조직화되지 않은 비트들로 이루어지지 않는다. 컴퓨터 설계자들은 비용을 고려해서 사용할 비트의 개수와 조직을 결정했다. 이전에는 허니웰이나 미니컴퓨터인 DEC PDP-8등에 여러 단위의 비트가 사용되었는데, 시간이 지남에 따라 세계적으로 8비트 덩어리가 기본단위로 널리 쓰이기 시작했고, 이를 바이트(byte)라고 부른다 비트의 묶음을 부르는 이름 [이름 / 비트 개수] 니블(nibble) / 4 바이트(byte) / 8 하프 워드(harf word) / 16 워드(word) / 32 더블워드(double word) / 64 '워드'는 각 컴퓨터가 설계상 자연스럽게 사용할 수 있는 비트 묶음의 크기를 가리키는 말로 쓰인다. 자연스럽게 사용할 수 있다는 의미는 컴퓨터가 빠르게..
2022.03.02