운영 체제를 작성하는 경우 무엇을 작성하고 있습니까? 나는 1980 년부터 마이크로 프로세서 기초 책을 읽을 때 이것을 묻습니다.이 질문은 내 머리에 터졌습니다.
최초의 마이크로 프로세서 칩은 어떻게 프로그래밍 되었습니까?
대답은 분명하지만 그게 나를 괴롭 힙니다.
운영 체제를 작성하는 경우 무엇을 작성하고 있습니까? 나는 1980 년부터 마이크로 프로세서 기초 책을 읽을 때 이것을 묻습니다.이 질문은 내 머리에 터졌습니다.
최초의 마이크로 프로세서 칩은 어떻게 프로그래밍 되었습니까?
대답은 분명하지만 그게 나를 괴롭 힙니다.
답변:
나는 당신의 질문을 문자 그대로 받아들이고 일반적으로 컴퓨터가 아닌 주로 마이크로 프로세서에 대해 논의 할 것입니다.
모든 컴퓨터에는 일종의 기계 코드가 있습니다. 명령어는 opcode와 하나 이상의 피연산자로 구성됩니다. 예를 들어, Intel 4004 (최초의 마이크로 프로세서)에 대한 ADD 명령어 는 1000RRRR로 인코딩되었습니다. 여기서 1000은 ADD의 opcode이고 RRRR은 레지스터 번호를 나타냅니다.
최초의 컴퓨터 프로그램은 기계 언어로 프로그램을 만들기 위해 1과 0을 직접 인코딩하여 직접 작성했습니다. 그런 다음 칩에 프로그래밍됩니다. 첫 번째 마이크로 프로세서는 ROM (읽기 전용 메모리)을 사용했습니다. 이것은 나중에 EPROM (Erasable Programmable ROM, UV 빛으로 지워짐)으로 대체되었습니다 . 이제 프로그램은 일반적으로 EEPROM ( 온칩에서 지울 수있는 "Electrically ...- EPROM" ) 또는 플래시 메모리로 프로그래밍됩니다.
대부분의 마이크로 프로세서는 이제 RAM에서 프로그램을 실행할 수 있지만 (마이크로 컨트롤러 이외의 모든 표준) 프로그램을 먼저 RAM에로드하는 방법이 있어야합니다. Joby Taffey가 그의 답변에서 지적했듯이 Altair 8080의 토글 스위치로 수행되었으며 Intel 8080 (4004 및 8008에 따름)에 의해 구동됩니다. PC 에는 컴퓨터를 시작하고 OS를 RAM에로드하는 데 사용되는 BIOS 라는 ROM 이 있습니다.
기계 언어는 지루해지기 때문에 니모닉 어셈블러 언어를 사용하여 명령 당 한 줄의 어셈블리 코드를 기계어 코드로 변환하는 어셈블러 프로그램이 개발되었습니다. 따라서 10000001 대신 ADD R1을 작성합니다.
그러나 첫 번째 어셈블러는 기계 코드로 작성해야했습니다. 그런 다음 자체 어셈블러 코드로 다시 작성할 수 있으며 기계 언어 버전을 사용하여 처음으로 어셈블했습니다. 그 후 프로그램은 스스로 조립할 수 있습니다. 이를 부트 스트랩 이라고 하며 컴파일러에서도 수행됩니다. 일반적으로 먼저 어셈블러 (또는 다른 고급 언어)로 작성된 다음 고유 언어로 다시 작성되고 컴파일러가 자체 컴파일 할 수있을 때까지 원래 컴파일러로 컴파일됩니다.
첫 번째 마이크로 프로세서는 메인 프레임과 미니 컴퓨터가 오래전부터 개발되었고 4004가 어쨌든 어셈블러를 실행하는 데 적합하지 않았기 때문에 인텔은 아마도 대형 컴퓨터 중 하나에서 실행되는 크로스 어셈블러를 작성하여 어셈블리 코드를 번역했습니다. ROM에 프로그래밍 할 수있는 이진 이미지로 4004. 다시 한 번, 이것은 컴파일러를 새로운 플랫폼 ( 교차 컴파일 링 ) 으로 이식하는 데 사용되는 일반적인 기술 입니다.
원래 프로그램은 종이에 기록 된 다음 컴퓨터가 사용할 수있는 모든 입력 방법으로 바꿨습니다. 이것은 첫 번째 컴퓨터의 노브, 스위치 및 점퍼 와이어에서 펀치 카드, 키패드 / 보드로 이어졌습니다.
읽기 전용 메모리의 초기 형태 중 하나는 주소가 행을 선택하고 (낮은 값으로) 열이 데이터를 나타내는 그리드입니다. 각 열에는 풀업이 있고 각 교차점에는 "0"을 나타 내기 위해 다이오드가 납땜되어 있거나 "1"을 나타 내기위한 다이오드가 없을 것입니다. 필요한 다이오드 수]. 임의의 원하는 비트 패턴은 적절한 다이오드에 납땜함으로써 "프로그래밍"될 수있다.
이 설계는 퓨즈 -PROM 형태로 집적 회로 세계에 도입되었습니다. 본질적으로 퓨즈 PROM은 모든 다이오드가 채워지고 모든 다이오드가 직렬로 약한 퓨즈를 가졌다는 점을 제외하고는 칩에 내장 된 위와 같은 회로였습니다. 배송 된 PROM은 모든 위치에서 "0"을 읽습니다. 그러나, 적절한 어드레스를 선택하고 적절한 데이터 라인을 "하드"하이로 구동하여 다이오드를 선택적으로 제거 할 수있다 [참고 : 각 비트는 다이오드보다는 자체 트랜지스터를 가지고 있었지만 원리는 동일하다고 생각한다].
퓨즈 프로그래밍 된 PROM은 내부 커패시터에 전하를 주입하여 비트를 저장하는 반도체 메모리에 의해 성공했습니다. 이러한 메모리는 퓨즈 -PROM보다 더 컴팩트 할뿐만 아니라 UV- 투명 패키지로 제공되는 경우 지워지고 재사용 될 수 있습니다. 소위 "일회성 프로그래밍 가능"메모리조차도 거의 항상이 같은 디자인을 사용하지만 UV 불투명 패키지에 들어 있습니다.
1950 MIT Whirlwind Computer 의 다이오드 매트릭스 제어 저장소
2005 MT15 CPU 의 트랜지스터 매트릭스 제어 저장소
누군가 OP의 실제 질문을 해결했는지 확실 하지 않습니다. "컴퓨터는 어떻게 시작하는 방법을 알고 있습니까?" 그래서 금이 갈 게요.
유추로 시작하십시오. "트랜지스터는 시작하는 방법을 어떻게 알 수 있습니까?" 물론 그것은 물리에 따라 작동하지 않으며 엔지니어는 회로를 알려진 상태에서 시작하도록 회로를 만듭니다.
컴퓨터는 회로 (물론 매우 복잡함)이기 때문에 시작하는 방법을 알고 있으며 특정 상태에서 시작하도록 만들어졌습니다. 최신 컴퓨터에서이 상태는 메인 버스가 주소 공간의 일부를 낮은 메모리 (ROM이 BIOS로 레코딩 된)로 마더 보드의 ROM에 사용자에게 다시 매핑하는 것일 수 있습니다. 1 세대 시스템에서 초기 상태는 CPU가 중지되고 프로그램 카운터가 0이며 메모리 토글 서브 시스템이 활성화되었을 수 있습니다.
운영 체제는 프로세서에서 직접 실행되는 컴퓨터 프로그램입니다. 기계 명령어로 컴파일하거나 조립할 수있는 모든 언어로 작성 될 수 있습니다. 어셈블리와 C가 일반적으로 선택됩니다.
코드는 상점에서 한 번에 단일 명령 (ROM 또는 RAM)으로 프로세서에로드됩니다.
Z3는 상기 제 1 프로그램 가능 프로세서는 전자 계전기의 내장 및 천공 필름의 명령어를 판독 하였다.
최초의 개인용 컴퓨터 인 Altair 8800은 토글 스위치로 프로그래밍되었습니다.
프로세서가 디지털 로직으로 구성되는 방법을 알아 보려면 https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exactly-beginners를 참조 하십시오.
기록은 http://en.wikipedia.org/wiki/History_of_computing_hardware를 참조하십시오 .
오래된 컴퓨터에 대한 정보는 다음과 같습니다.
내가 아는 한, 옛날에는 프로그램을 위해 사용되는 큰 컴퓨터 전면 패널 이있었습니다. 기본적으로 해당 컴퓨터의 각 메모리 셀은 스위치에 연결되었습니다. 메모리에 전원을 공급 한 다음 스위치를 사용하여 각 셀에 데이터를 설정합니다. 이런 식으로 프로그램을 컴퓨터 메모리에 비트 단위로 입력합니다. 그런 다음 프로그램의 시작점을 설정하고 실행을 시작합니다.
기술이 발전함에 따라 소위 부트 로더 프로그램이 개발되었습니다. 그것들은 요점은 컴퓨터 메모리에서 다른 프로그램을 시작하는 짧은 프로그램입니다. 비트 단위로 프로그램을 입력 할 때 (그리고 8 진수 및 16 진수를 사용하여 1 비트 이상으로) 문제는 매우 느리고 프로그램을로드하는 동안 운영자가 실수 할 가능성이 크다는 것입니다. 따라서 짧은 프로그램은 컴퓨터 메모리에 저장된 더 큰 프로그램을로드하는 데 사용됩니다. 시간이 지남에 따라 직접 입력해야하는 코드 부분이 줄어들었고 현대 컴퓨터에서는 종종 부트 로더가 ROM 또는 플래시 메모리로 작성되었습니다.
몇 년 전 4 자리 7 세그먼트 디스플레이와 16 진수 키패드가있는 마이크로 컨트롤러 프로그래머를 만나게되었습니다. 나는 이것이 보드에 마이크로 컨트롤러가 없었고 한 번에 한 바이트 씩 기계 코드를 직접 입력 할 수 있다고 확신합니다.
따라서이를 통해 Op 코드 목록을 하나씩 수동으로 컴파일하고 칩에 입력 할 수 있습니다.
그래도 얻을 수 있는지는 모르겠지만 마이크로 컨트롤러가 비교적 새로운 경우 비슷한 것이 다시 사용되었다고 생각합니다.