운영 체제 이전에는 어떤 개념을 사용하여 작동 시켰습니까? [닫은] 컴퓨터 시스템의 모든 입력 및 출력을 처리합니다.

운영 체제는 컴퓨터 아키텍처와 밀접하게 관련되어 있으며 OS는 컴퓨터 시스템의 모든 입력 및 출력을 처리합니다. 사용자, 프로세스, 메모리 관리, 인쇄, 통신, 네트워킹 등을 관리하며 디스크, 프린터, 화면 및 컴퓨터에 연결된 기타 주변 장치로 데이터를 보냅니다.

운영 체제를 도입하기 전에

컴퓨터 시스템에서 작동시키기 위해 사용 된 것은 무엇입니까?

컴퓨터의 진화에서 운영 체제에 어떤 개념이 사용 되었습니까?



답변

초기 컴퓨터 는 한 번에 하나의 프로그램을 실행했습니다.

구멍이 뚫린 종이 테이프 (예 : 종이 테이프)에서 프로그램을 직접로드했습니다.

많은 on-off 스위치를 설정 하여 가장 빠른 컴퓨터 를 프로그래밍 할 수 있습니다.

거상:

아틀라스:

맨체스터:


저는 “컴퓨터”라는 단어를 사용하여 오늘날 수십억에 해당하는 장치를 의미합니다. 이 방대한 수의 컴퓨터 중에서, 매우 적은 수를 제외한 모든 컴퓨터에는 프로그램이 저장된 디지털 전자 프로그램 가능 컴퓨터가 있습니다. 원래 질문은 “컴퓨터”라는 직함을 가진 사람들이 근무일을 어떻게 보냈는지에 대한 것이 아닙니다. 이 두 가지 유형의 컴퓨터 사이에는이 답변에서 다루지 않은 흥미로운 장치의 진행이 있습니다.


답변

출처 : 운영 체제의 역사

운영 체제는 대략 수십 년에 해당하는 여러 단계 나 세대를 통해 발전해 왔습니다.

1940 년대-1 세대

최초의 전자 디지털 컴퓨터에는 운영 체제가 없었습니다. 당시의 기계는 너무 원시적이어서 프로그램이 종종 기계식 스위치 (플러그 보드) 열에 한 비트 씩 입력되었습니다 . 프로그래밍 언어는 알 수 없었습니다 (조립 언어조차도 아님). 운영 체제는 들어 본 적이 없습니다.

1950 년대-2 세대

1950 년대 초, 펀치 카드의 도입으로 루틴이 다소 개선되었습니다. 제너럴 모터스 (GM) 연구소는 IBM (701)에 대한 1950 년대 초 최초의 운영 체제를 구현 . 50 년대의 시스템은 일반적으로 한 번에 하나의 작업을 실행했습니다. 프로그램 및 데이터가 그룹 또는 배치로 제출 되었기 때문에이를 단일 스트림 배치 처리 시스템이라고합니다.

출처 : http://en.wikipedia.org/wiki/History_of_operating_systems

초기 컴퓨터는 모든 형태의 운영 체제가없는 메인 프레임이었습니다.

각 사용자는 예정된 시간 동안 기계를 단독으로 사용했으며 프로그램 및 데이터가있는 컴퓨터 (종종 펀치 용지 카드 및 자기 또는 종이 테이프)로 컴퓨터에 도착했습니다. 프로그램이 머신에로드되고 프로그램이 완료되거나 충돌 할 때까지 머신이 작동하도록 설정됩니다.

토글 스위치와 패널 표시등을 사용하여 제어판을 통해 프로그램을 디버깅 할 수 있습니다. Alan Turing은 맨체스터 Mark 1 초기 기계의 마스터였으며 이미 Universal Turing 기계의 원칙에서 운영 체제의 기본 개념을 도출하고있었습니다.


답변

컴퓨터 시스템의 시작 부분으로 돌아 가면 단일 컴퓨터 시스템이 없었고 대신 메인 프레임이있었습니다.

이 메인 프레임은 프로그램 (및 종종 데이터)을 포함하는 천공 카드에서 실행됩니다. 사람들은이 시스템에서 시간을 할당 받고 카드를 가져 와서 처리 할 수 ​​있도록 기계에 꽂습니다. 기계는 프로그램이 끝날 때까지 프로그램을 실행 한 다음 다음 사용자가 테이프와 카드를 가지고옵니다.

기본적으로 그것이 작동하는 방식입니다.


답변

1890-1950-시스템 고유의 조작
가장 초기의 컴퓨터는 현재 OS가 내장 한 것과 동등합니다. 귀하 (운영자)도 운영 체제의 일부였습니다. 레지스터 스위치를 뒤집거나 (펀치 카드 사용) 물리적으로 교체 된 버스 와이어 (구식 전화 교환 원의 생각)와 메모리 (물리적 와이어를 통해)를 전구 (오늘의 모니터) 및 프린터 ( 프로그램 저장 장치가 출력 메모리 버퍼에 배치 될 때 장치로 직접 켜지고 인쇄되는 방식으로 장기 저장). (물리적 와이어가 작동하는 방식으로 인해) 그들은 단지 ‘일하기’때문에 (요즘에는 모니터와 같은 것도 없었기 때문에) 이러한 것들에 필요한 드라이버가 없었습니다. 실제로이 숫자는 디지털 숫자 디스플레이가 발명 될 때까지 수십 년 동안 지속되어 이미 레지스터에 입력 한 숫자와 출력을 10 진수로 볼 수 있습니다. 프린터는 모니터까지이 시대를 지배했습니다. 올바르게 작동하는 데 필요한대로 정확하게 배선되었습니다. 이 부분은 기계식 (1890 년대)에서 전기 아날로그 (1910 년대)에서 디지털 (1930 년대) 로의 전환에 따라 크게 바뀌지 않았습니다. 이 ‘Plug N play’아키텍처는이 시간 동안 인터럽트 시스템으로 대체되었으며 90 년대 후반까지 다시 부활하지 않을 것입니다. 물론 그때에는 막힘이 훨씬 줄었습니다. 인터럽트가 발생하면 장치는 CPU 시간이 걸리므로 아키텍처가 허용되지 않습니다. t는 하드웨어에 직접 연결되어 있지만 x86 아치 (및 최신)에서 볼 수있는 간소화 된 프로세스가 되려면 몇 세대가 걸렸습니다. 초기 시스템은 종종 끔찍한 경쟁 조건, 하드웨어 호환성 / 지연 문제 및 인터럽트가 관련된 기타 이상한 동작을 겪었습니다. 각 기계는이 기간에 완전히 다른 (실험적인) 아키텍처를 사용했기 때문에; 거의 모든 장치는 그들이 작업 한 기계를 위해 맞춤 제작되었습니다.

1950-1973-시스템 내에서의 작동
이 시대에는 실제 운영 체제에 대해 이야기 할 때 생각하는 대부분의 기능이 등장했습니다. 이 시대에는 디버깅, 프로그래밍 언어, 다중 사용자, 다중 작업, 터미널, 디스크 유형 드라이브, 네트워킹, 구성 요소 표준화 등이 모두 도입되었습니다. 이번에는이 중 상당수의 표준화로 큰 도약이 이루어졌으며 이는 우리가 더 표준화 된 장치를 가지고 있었지만 여전히 각 시스템에 대해 각 OS가 수작업으로 만들어 졌기 때문에 특정 시스템을 설계 한 엔지니어가 필요로하는 결정에 따라 OS 기능이 심각하게 제한됨을 의미했습니다. . 이 기간 동안 운영 체제에 따라 상당한 회색 영역이 생겼습니다. 다른 아키텍처가 처리하는 방식이 훨씬 다르기 때문에보다 일반적인 목적의 머신은 동일한 작업을 처리하는 하드웨어를 포함하는 머신보다 훨씬 많은 OS가 필요하기 때문입니다. 사실 하드웨어는 항상 소프트웨어보다 빠르며 소프트웨어에서 실제로 수행되는 모든 것은 이론적으로 하드웨어에서 수행 될 수 있습니다 (비용 \ 유연성 \ 크기 \ 시간 \ 등). 일). 특정 컴퓨터 나 컴퓨터 유형에 맞게 OS를 만들었습니다. 다른 곳에서는 작동하지 않습니다. 각각의 새로운 컴퓨터 설계는 특정 기계 모델과 함께 작동하기 위해 모든 저수준 OS 소프트웨어를 처음부터 다시 작성해야했습니다. 이 기간이 끝날 무렵, 새로운 OS가 등장하여 Ken Thompson과 Dennis Ritchie가 Bell Labs에서 작성한이 패러다임을 곧 바꿀 것입니다.

1973-시스템 간 작동
단일 프로그램이이 모든 것을 변경했지만 UNIX는 아니 었습니다. 그것은 C 컴파일러였습니다 (Bell Labs가 잘라낸 후 Ken Thompson과 Dennis Ritchie가 차고에서 만든 것으로 유명합니다). 이 시점까지는 코드를 작성할 때마다 머신 코드 (머신이 직접 이해하지만 이식성이없는 코드)이거나 코드를 바이트 코드 (다른 프로그램에서 해석하는 코드)로 컴파일 한 언어로 작성되었습니다 실행). C가 가져온 OS의 큰 차이점은 기계 코드로 크로스 컴파일이라는 것을 수행하는 능력이었습니다. 즉, 컴파일러가 해당 머신 용으로 작성된 경우 코드를 한 번 작성하고 여러 다른 머신 유형에서 실행되도록 컴파일 할 수 있습니다. 기계 코드는 문자 그대로 기계가 알고있는 유일한 코드이므로 운영 체제는 기계 코드로 작성해야합니다.

Ken과 Dennis가 C 컴파일러를 사용하여 UNIX 커널을 처음 컴파일 한 후에야 진정한 의미의 진정한 OS가 탄생했다고 말할 수 있습니다. 그 전에 OS는 물리적 객체이거나 특정 머신을 위해 특별히 설계된 사전 초기화 된 메모리 공간 덩어리였습니다. 시스템에 새 장치를 추가하려면 문자 그대로 ‘커널’코드를 다시 작성해야했습니다. 이제 특정 머신을 위해 설계된 UNIX OS는 모든 것을 다시 쓰지 않고 다른 머신에서 다시 컴파일하고 실행할 수 있습니다 (그 머신이 부트 스트랩 환경에서 C 컴파일러를 컴파일 할 수있는 한 나머지 OS는 비교적 높은 수준의 C 코드).


답변

처음에는 프로그램이 컴퓨터에 하드 와이어되어 부팅시 특정 위치에서 즉시 프로그램을 실행하기 시작했습니다.

그리고 펀치 카드, 테이프, 드럼, 디스크 등 다양한 형태의 오프라인 저장소가 발명되었습니다. 훨씬 더 유연합니다. 그러나 CPU에서 직접 액세스 할 수는 없습니다. 프로그램을 실행하기 전에 메모리에로드해야합니다. 따라서 프로그램을로드 할 프로그램을 작성하십시오. 이것을 로더 또는 부트 스트랩이라고합니다 ( “부트 스트랩으로 몸을 끌어 올리기”라는 표현에서).

시스템이 복잡 해짐에 따라 간단한 로더로드와 더 복잡한 로더가있을 수 있습니다. 이것은 마이크로 컴퓨터에서 시작되었습니다. 일반 테이프 로더는 느리므로 압축 해제기를로드하고 나머지 테이프를 빠르게로드하십시오. 또는 디스크에 비표준 작업을 수행하여 복제 방지 시스템으로 두 배가 된 디스크 속도 로더입니다.

또는 UEFI 사전 PC 부팅 프로세스 : 프로세서가 BIOS에서 실행되기 시작합니다. 그러면 디스크에서 첫 번째 섹터가로드되어 점프합니다. 활성 파티션을 찾고 부트 로더를로드하여 운영 체제를로드합니다. 원래는 MSDOS의 경우 COMMAND.COM이었습니다. 이제는 일반적으로 Windows 용 NTLDR.EXE입니다.


답변

초기 하드웨어 (1960 년 이전)에서는 I / O가 훨씬 단순했습니다. 각각 하나의 명령으로 카드를 읽거나 카드에 구멍을 뚫거나 프린터에 줄을 인쇄 할 수 있습니다. 버퍼 크기는 고정되어 있으며 종종 버퍼 주소도 고정되어 있습니다.

보다 정교한 프로세서 (예 : 7090)를 사용하는 60 년대 초에도 각 프로그램에 쉽게 복사 된 작은 루틴 (약 20 개의 명령)으로 카드를 읽거나 펀치 할 수 있습니다.

컴퓨터는 전적으로 단일 작업 전용이므로 카드 판독기가 다음 카드를 읽을 준비가되거나 라인 프린터가 다음 라인을 공급할 때까지 프로세서가 유휴 상태인지 여부는 중요하지 않습니다.

실제로 컴퓨팅 시간이 비싸기 때문에 문제가되었습니다. 이것이 바로 사람들이 멀티 프로세싱, 시간 공유, 비동기 I / O 추가, 인터럽트, 장치 드라이버 및 운영 체제를 발명 한 이유입니다. 프로그래머에게는 하드웨어 장치 인터페이스가 더욱 복잡 해져서 더 낮은 수준의 I / O 레지스터에 액세스 할 수있게되어 장치 드라이버의 복잡성이 증가했습니다. 이 복잡성 비용 (메모리, 프로그래밍 시간)은 운영 체제에 의해 다중화 된 장치를 “동시에”사용하여 여러 프로그램에서 상각되었습니다.

아직도 80 년대에 마이크로 프로세서 기반 컴퓨터를 사용하여 그 오래된 시스템 중 하나를 에뮬레이트했습니다. 머신 명령어는 80 비트 (10 옥텟) 이상의 균일 한 형식을 가졌으며 첫 번째 하드 디스크의 첫 번째 섹터를 읽고이를 주소 0의 메모리에 저장하는 명령어는 매우 편리했습니다. 0000000000. 부팅 절차는 매일 아침 구성되었습니다. 이 명령을 터미널에 입력하여 주소 0에 저장하고 실행 한 다음 부트 섹터를로드하고 다음 명령에서 실행을 계속했습니다 (주소 10). 파일 시스템은 수동으로 할당 된 섹터 범위에 대한 “이름”정적 테이블 맵핑 파일로 구성되었습니다! I / O는 섹터를 직접 읽거나 쓰는 방식으로 해당 파일에 대한 어셈블러에서 수행되었으며 “


답변

더 넓은 개인 용도로 설계된 주먹 세대 컴퓨터는 ROM (읽기 전용 메모리)에서 “모니터”라고 불렀습니다.

부팅 직후 모니터는 테이프 레코더와 같은 데이터 저장소에서 프로그램을로드하고 실행을 시작하기 위해 매우 제한된 명령 줄 인터페이스를 제공했습니다 (수동으로 코드를 입력 할 수있는 명령은 거의 없지만 거의 필요하지 않음). 한 번에 하나의 프로그램 만 실행할 수 있습니다.

운영 체제와 달리 Monitor는 어떤 종류의 파일 시스템도 지원하지 않았습니다. 작업자는 올바른 테이프를 찾아 레코더에 놓고로드 할 필요한 프로그램 시작 위치에 배치해야했습니다.

BIOS와 운영 체제의 기능을 모두 모니터링하고 이미 소프트웨어였습니다.

전원을 켠 후 짧은 “재설정”신호는 다른 카운터와 마찬가지로 단순히 프로그램 카운터를 제로화하는 동시에 메모리 매퍼 (있는 경우)를 전환하여 주소 0000을 모니터 ROM에 매핑합니다. 나중에 모니터를 높은 주소 공간으로 다시 매핑하기위한 일부 하드웨어 회로를 갖는 것이 일반적이었습니다. 코드 시작 외에도 “재설정”버튼을 사용하여 다른 프로그램을로드 할 수 있도록 실행중인 프로그램을 종료했습니다.

초보적인 “재설정”버튼은 오늘날에도 일부 데스크탑 PC에서 찾을 수 있습니다.