운영체제는 어떻게 만드는건가요..?
글쓴이: 맹고이 / 작성시간: 일, 2003/02/23 - 10:52오후
개념이 없는 초보라 질문드립니다..
운영체제라는걸 만들때 C언어 같은걸로 만드나요?아님 기계어?
유닉스가 C로 만들었다고 들은것 같기도 하고-_-a
그럼 컴파일이라는걸 해야될텐데.. 컴파일은 어디서 하는건가요?
gcc와 같은 컴파일러로 한다면..
또다른 운영체제위에서 컴파일 해야되는것 아닌가요?
그럼 최초의 운영체제는 어떻게?-_-a
학교에 운영체제라는 수업을 들으면 가르쳐줄것같지만 휴학중이라서요-_-
당췌 어떻게 돌아가는건지 개념없는 놈에게
답변 부탁드립니다
Forums:
Linux의 경우 처음에는 floppy로 부팅할때 올라올정도의 크기로 시
Linux의 경우 처음에는 floppy로 부팅할때 올라올정도의 크기로 시작하였습니다.
처음부터 공부하실 거라면, floppy로 부팅을 하는 방법을 배우시고,
terminal(키보드, 화면) 제어하는 것부터 만드시는 것이 어떨까요?
언어는 물론 부트스트랩에 Assembly어는 필수죠. 그리고 그 위에 올리는 것들은 CPU architect가 같은 compiler로 생성되는 assembly어를 수정해서 올리는 방법으로 하면 되지 않을까요?
Unix 다운 운영체계가 아니라, 단지 자신만의 코드로 부트 되고 입출력되는 것을 만들어 보는 것도 큰 의미가 있을 것 같습니다.
그 다음에는 file 입출력을 위해 file system을 다루어 보시고,
그 다음에 process, memory.. 관리 등등을 추가해가다 보면....
해 가다보면.......
되지 않을까요? ^^
---
http://coolengineer.com
OS;;
학교 수업중에 OS 시간에는 실제로 제작에 대해서 다루지는 않을겁니다;
그 과목에서 실제로 다루는 것은 OS 가 어떤 원리로
Memory 관리하고, Disk 관리하고, Scheduling 을 어떻게 하고...등등
OS 의 내부 원리를 배우는 과목일겁니다;;
그리고, 글에 쓰신것처럼 Unix 는 C 로 만들어진게 맞습니다;;
최초의 OS 는 어떻게 만들어졌느냐는 의문을 가지신거 같은데;;
원래 컴퓨터를 사용하기 시작한 때의 언어는 기계어, 그후에 어셈블리언어가
존재했죠;; C 같은 고급(?)언어는 아직 탄생도 안한 시기에는
역시나 기계어, 또는 어셈블리어로 OS 를 제작했죠;;
그후에 고급언어들이 발전하고, 하드웨어가 발전해 왔지만...
한동안 OS 에 있어서는 기계어나 어셈블리어를 사용해야 한다는게
거의 정설로서 굳어져 있었죠..
하지만, 최초의 Unix 가 C 로 만들어지면서 이것이 깨지고,
최초의 Unix 가 탄생한 시기에 이로 인해서 많은 논란이 있었죠;
물론, OS 를 기계어로 제작한것과 C 로 제작한것은 차이가 납니다;;
C 로 만들어진 OS 가 아무래도 덩치나 성능면에서 떨어지죠...
(Unix 의 역사를 보다보면은 이에대한 언급이 있습니다. 기억이 안나서;;
쓰지는 못하겠네요 ^^;;)
하지만 OS 역시 유지보수가 중요시 되면서 점점 고급언어를 사용하는
추세입니다. 우리가 알고 있는 Linux 가 그러한 OS 중 하나죠..
OS의 스케줄링이나 어쩌구저쩌구 복잡한건 하나도 모르지만요..어떠
OS의 스케줄링이나 어쩌구저쩌구 복잡한건 하나도 모르지만요..
어떠한 플랫폼을 기반으로 하느냐도 중요하단 생각이 듭니다.
마이컴과같이 작은 CPU의 단순한 OS(?)정도는 CPU벤더에서 제공하는
어셈 컴파일러나, C컴파일러를 사용할 수 있고요..
IBM호환 PC의 경우는.. 여러 어셈블 컴파일러를 사용할 수 있습니다.
개인적으로는 nasm사용합니다.
그리고, IBM호환 PC의 경우 마이컴과는 다르게 직접 CPU에 명령을 내리고
모든 I/O를 제어하는 것이 아니라 BIOS라는 프로그램(?)을 사용하죠.
보통의 OS상에서 어셈블리 코딩을 하는것과는 약간의 차이가 있습니다.
많은 인터럽트와 각 인터럽트의 모드 등등..
그리고, BIOS특성을 잘 알아야할겁니다. (다 똑갔겠지만.. ^^)
IBM호환 PC에서의 OS를 만들 작정이시면.. 윗분의 말씀대로 부팅
디스켓(이미지?)만드는걸 해 보심 좋을것 같습니다.
오래되서 기억은 잘 나지 않지만 Boot Control, Boot Strap등으로
검색해 보시면 될겁니다.
가끔은 밥을 굶어도 살 수 있다.
답변 감사합니다
OS를 만들어볼생각으로 질문한게 아니었는데..ㅎㅎ
언젠간 장난감같지만 저만의 OS를 만들어보고픈 꿈은 있지만요
아직은 내공이..;;
여러가지 좋은 정보 주신분들께 감사드립니다~
p.s. 마이컴 CPU란게 무엇인지요?-_-a
컴퓨터 잡지가 생각났습니다-_-;;
Re: 답변 감사합니다
칩 하나에 CPU, (적은) 메모리, 플래시, 주변기기 컨트롤러가 같이 들어있어서 거의 하나의 칩으로 또는 센서같은 주변기기만 부착해서 돌아가게 할 수 있는 CPU를 말합니다. 음 예를 들면 자판기 제어나 에어컨 제어, 엘리베이터 등등 기계의 컨트롤러나 모니터, TV, 앰프등에 들어가지요.
요즘은 거의 모든 가전 기기에 CPU(대부분 마이컴)가 들어가는 추세입니다. 그리고 이제 그것들을 임베디드 시스템이라고 부르지요.
제 예상으론 앞으로 3,4년 동안은 임베디드의 시대일 거라고 봅니다. MS도 그걸 알고 손을 뻗치고 있지요.. 마치 인터넷 붐 직전에 그랬던 것 처럼..
애궁 이런 잡설을..
8051, 80c196, PIC, dragonball 등을 들어서 알고 있습니다.
ps. 들어봤다지만 전 ARM이랑 68K밖에 안써봤어요 >_<
rommance.net
댓글 달기