운영 체제 이전에는 어떤 개념을 사용하여 작동 시켰습니까? [닫은]


50

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

운영 체제를 도입하기 전에

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

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


5
"이전에 컴퓨터 시스템에서 사용 된 것 ..." -오늘날 OS를 실행하지 않은 것과 동일합니다. 한 번에 하나씩 전체 컴퓨터 시스템을 단일 사용자에게 넘겨 배치 작업을 실행 합니다.
톱밥


4
마이크로 컨트롤러에서 실행되는 코드를 생각해보십시오. 운영 체제에서는 실행되지 않지만 머신 코드로 컴파일되고 실제 물리적 장치에서 실행되는 C 코드입니다 (이 머신 코드가 펌웨어에 "플래시 된"후). 운영 체제 는 자원 공유프로세스 스케줄링 개념을 사용하여 여러 프로그램 이 컴퓨터의 모든 부분과 동시에 상호 작용 하도록 합니다. 마찬가지로 필요한 경우 작은 마이크로 컨트롤러 에서도 운영 체제를 사용할 수 있습니다 .
획기적인

많은 답변이 I / O, 프로그램로드 방법 및 주변 장치에 중점을두고 있습니다. 그러나 이것은 OS의 목적, 즉 자원 관리 및 공유, 그리고 아마도 다중 사용자 기능을 모호하게합니다. 와이어 보드 또는 펀칭 테이프 또는 드럼에서 코드를로드하거나 최신 SD 카드를 사용하는 경우 OS의 목적은 변경되지 않습니다.
톱밥

카드 데크. 천공 된 종이 테이프. 컴퓨터를 통해 동일하게 공급하는 연산자.
Daniel R Hicks

답변:


42

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

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

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

거상:

아틀라스:

맨체스터:


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


1
두 번째 그림에서 해당 스위치를 사용하는 하드웨어를 가지고 있습니다. 또한 동일한 방식으로 프로그램을 실행합니다. 멋진 그림을 사용하는
공감

ENIAC과 같이 가장 초기의 제품은 유선으로 연결되지 않습니까? 전환되거나 저장된 프로그램이 없습니까? 또는 그 때문에이 더 이상 컴퓨터가 없습니다 ... 호기심
리치 Homolka

1
@ RichHomolka : 당신이 암시하는 것처럼, 그것은 실제로 컴퓨터로 간주하는 것에 달려 있습니다. 오늘날 대부분의 사람들은 아마도 디지털 전자 프로그램 가능 컴퓨터를 의미 할 것입니다. 물론, 예를 들어 기계식 아날로그 컴퓨터가 있었고 가장 오래된 컴퓨터는 사람이었습니다 (직 책임). 시간이 있으면이 문제를 해결하기 위해 답변을 확장 할 수 있습니다. ENIAC은 스위치와 케이블을 조작하여 프로그래밍했다고 생각합니다.
RedGrittyBrick

운영 체제는 상당히 초기에 시작되었습니다 ( 1956-en.wikipedia.org/wiki/GM-NAA_I/O 참조 ). 최초의 대량 생산 컴퓨터는 약 1954 년이었습니다.
Bruce Martin

"원래 질문은"컴퓨터 "라는 직함을 가진 사람들이 근무일을 어떻게 보냈는지에 대한 것이 아니라고 확신합니다."-할머니는 컴퓨터였습니다.
Paul D. Waite

13

출처 : 운영 체제의 역사

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

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 기계의 원칙에서 운영 체제의 기본 개념을 도출하고있었습니다.


10

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

여기에 이미지 설명을 입력하십시오

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

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


4
여기서 "운영 체제"는 ... 사용자를위한 일정을 수행하는 사람은 누구입니까?
Kyle Strand

2
내 요점은 당신의 대답은 "엄격히 말해서 운영 체제가 오랫동안 어떤 형태로든 주변에 있었다"는 말의 의미를 설명하지 못한다는 것입니다. 메인 프레임에 대한 기본 설명을 제공하지만 이러한 메인 프레임에 "운영 체제"라고하는 것과 원격으로 유사한 것이 있는지는 확실하지 않습니다.
Kyle Strand

3
나는 당신이 말하려는 것을 알고 있지만이 설명에 대단히 편안하지는 않습니다. 위의 메인 프레임에 대한 정확한 설명을 충족시키는 메인 프레임에서 작업하기에 충분히 오래되었지만 실제로 운영 체제가 포함되어 있습니다. 그림의 메인 프레임은 아마도 OS / 360 또는 초기 버전의 MVS를 실행하는 1970 년대 IBM 메인 프레임 (/ 360 또는 s / 370?) 일 것입니다.
Rob Moir

2
"펀칭 마그네틱 카드" 와 같은 것은 없습니다 . "메인 프레임"의 사진은 할리우드와 평신도의 컴퓨터 비전을 유지하는 데 있습니다.
톱밥

1
여기에 몇 가지 잘못된 진술이 있습니다. @sawdust가 말했듯이 천공 카드는 자기가 아닙니다. 또한 펀치 카드에는 종종 프로그램 데이터가 포함되어 있습니다 . 또는 프로그램이 종이 (구멍이 뚫린) 테이프에있을 수 있습니다. 매그 테이프 스풀은 훨씬 나중에 이루어졌습니다. 그 전에 RedGrittyBrick의 답변에 표시된 것처럼 패널 스위치를 통해 또는 플러그 보드를 통해 컴퓨터를 다시 배선하여 프로그램을로드했습니다. 나는 아버지, 아들 & 컴퍼니가 흥미롭고 유익한 역사를 발견했습니다.
Stephen P

6

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 코드).


1
누군가 OS \ 360이 UNIX보다 먼저 나온다고 언급했습니다. 이것은 사실이지만 그 당시의 다른 모든 OS와 마찬가지로 실행되는 각 개별 머신 모델에 대해 핸드 코딩되었습니다.
krowe

1
누군가 FORTRAN도 크로스 컴파일 할 수 있다고 언급했습니다. ALGOL (C의 전신)도 마찬가지 였지만 C는 머신 독립적 인 OS를 구축하기 위해 부트 스트랩 된 최초의 제품이었습니다.
krowe

1
" Ken과 Dennis가 처음으로 UNIX 커널을 컴파일 할 때까지 ... 현대적인 의미에서 진정한 OS가 탄생했습니다 .."OMG. 이 사이트에는 덜 사실적인 단어가 쓰여지지 않았습니다. 이 진술이 원격으로 정확하다는 의미는 없습니다.
RBarryYoung

1
또한 MULTICS (및 BCPL)를 무시합니다
Francis Davey

UNIX 및 C의 우선 순위에 대해 위에 나열된 대부분의 내용이 올바르지 않습니다. 특히 OS 역사에서 UNIX 및 C가 그토록 중요한 이유는 무엇입니까 ? 이것은 (및 기타 AT & T 기술의 많은) 것을 의미 AT & T에 대한 1974 동의 법령에 거의 전적으로 기인 무료 , 소스 코드를 포함 . 이 때문에 실제 "첫 번째"는 모든 소스 코드를 포함 하여 최초의 무료 기능을 갖춘 최신 OS 및 저수준 컴파일러였습니다. 경쟁 업체가 10-20 년 동안 차지할 독방 적 입장은 경쟁 업체가 그 이점을 정직하게 인정할 것입니다.
RBarryYoung

3

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

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

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

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


3

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

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

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

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

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


2

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

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

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

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

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

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


가정용 개인용 컴퓨터의 1 세대 (또는 2 세대)도 마찬가지입니다. 그들이 존재하기 전에, 중등 학교의 학생들은 다르게 작동했지만 여전히 "더 넓게 사용하도록 설계된"시간 공유 컴퓨터에 원격으로 액세스 할 수있었습니다. 1 세대 가정용 컴퓨터 인 Altairs와 Heathkits에 모두 명령 줄 모니터가 있는지 잘 모르겠습니다.
RedGrittyBrick

0

운영 체제의 가장 직접적인 선행 작업은 장치와의 인터페이스를위한 표준 라이브러리와 프로그램을 메모리로 가져와 실행하기위한 부트 스트랩 로더 시스템의 조합입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.