메뉴 건너뛰기


답변들 정말 감사해요 그런데..

imcrazy2004.11.19 13:13조회 수 198댓글 0

    • 글자 크기


1. 컴퓨터 동작 원리

일반적인 피씨 기준으로 설명 하자면..

1.1 컴퓨터에 전원이 들어 오면 미리 정의된 순서에 따라 메인 보드의 롬바이오스(롬메모리)에서 일정량의 데이터를 읽어 옵니다. (요기까지는 단순 무식하게 기계적으로 처리 됩니다.)

1.2 롬메모리에서 읽어온 일정량의 데이터가 씨피유로 전달 되면서 비로서 컴퓨터다운 처리를 시작합니다.
처음에 읽어 들인 데이터에는 컴퓨터가 처음에 해야할 일에 대한 명령이 들어 있습니다.

처음에 읽어들인 데이터(명령)에 따라 시피유가 작업을 끝내면 작업을 끝냈다는 신호를 내보내고, 그 신호를 받아서 롬 메모리에서 다음 데이터 블럭(위에 말한 일정양의 데이터)를 읽어 오고..
그거 처리하고 나면 또 다음 명령 읽어 오고 실행하고, 롬 바이오스의 데이터를 다 읽어 올때 까지 계속되는 반복입니다.

1.3 롬 바이오스에 들어 있는 명령은 기본적인 하드웨어 상태를 체크 하고, 마지막으로 운영체제를 기동시키도록 하는 명령이 들어 있습니다.

운영체제를 기동 시키도록 하는 명령을 받으면 플로피나, HDD, CD-ROM 등의 운영 체제가 담겨있는 저장 메체를 검사 하고, 운영 체제를 로딩 합니다.

여기까지의 과정을 '부팅' 이라고 합니다.

1.4 운영체제가 로딩 되는 과정 역시 기계적으로 이루어 집니다.
운영체제가 로딩되기 위한 기본 적인 정보는 플로피 디스크, 하드 디스크, CD-ROM의 특정 위치에 있도록 미리 약속되어 있습니다. (부트레코드 라고 합니다.)

운영체제 로딩 명령을 받으면 운영체제가 저장되어 있다고 추정되는 매체(플로피, 하드, 시디)의 특정 위치의 데이터를 읽어 옵니다. 읽어온 특정 위치에 부팅에 대한 정보가 있다면 그 정보에 따라 시피유가 동작 하게 되며, 여기서 부터 메인보드의 롬바이오스 대신 특정 운영체제에 따라서 컴퓨터가 동작 하게 됩니다.


2. 언어..
초기에는 컴퓨터 언어라는 것이 없었습니다.

무슥하게 컴퓨터에 2진 데이터를 직접 입력해 주었답니다.
예를 들어 더하기 명령이 '0101 0101' 이라면.. 1 더하기 2를 할때는
0000 0001, 0101 0101, 0000 0010 ( 1 + 2 )
이렇게 직접 명령을 입력 했고, 그 계산 결과 역시
0000 0011
이런식으로 나왔습니다.


CPU가 위의 명령을 받으면 다음과 같이 처리 합니다.

a. 먼저 0000 0001 이라는 데이터를 읽어 들입니다.
b. 0000 0001 이라는 데이터가 CPU의 내부 명령어 인지 판단 합니다.
c. 0000 0001 이라는 데이터는 CPU의 내부 명령어가 아니므로 CPU내부 메모리(주메모리)에 임시로 저장을 합니다.
d. 다음 데이터 블럭을 읽어 들입니다. 여기서는 '0101 0101' 이 됩니다.
e. 0101 0101 이 내부 명령어 인지 판단 합니다. 아! 이것은 바로 이전의 데이터와 앞으로 들어올 데이터를 더하 라는 명령 입니다.
f. 위의 명령에 따라 다음 데이터 블럭(0000 0010)을 읽어 내부 메모리에 저장 합니다.
g. a)에서 읽어와 c)에서 저장해 놓았더 데이터와 새로 읽은 데이터를 더합니다.
h. g)에서 더한 결과를 내부 메모리에 저장 합니다.

( 원래는 더 복잡합니다만 개념상 간단히 했습니다 ^^;; )

cpu의 동작 방식 역시 위와 같이 단순 무식 합니다. 다만 이 짓거리를 겁나게 빨리 할 뿐이죠.


이렇게 2진 데이터를 직접 입력하는 방식이 너무 불편해서.. 어셈블리 라는 언어가 개발 되었습니다.
어셈블리의 명령어는 2진 데이터와 1대 1로 대응 되는 언어 입니다.
위에서 더하기 명령이 '0101 0101' 이라고 했는데 이대로는 사람이 알아보기 너무 어렵습니다.
그래서..
0101 0101 = add
0000 0001 = 1
0000 0010 = 2
0000 0011 = 3
이런식으로 표현이 가능한 언어를 만든 겁니다. 이제 위에 기계어를 어셈블러로 해보면..

1 add 2

이렇게 됩니다. 이진 데이터 보다 훠~~얼씬 보기 쉬워졌죠.

초기에는 오퍼레이터(타자만 전문으로 치는 사람 ^^;;)가 '1'이라는 키보드를 누지르면 컴퓨터에 '0000 0001'이라고 입력되도록 기계적으로 만들었습니다.
즉, 프로그램을 한자씩 직접 cPU에 입력했습니다. 중간에 오타 한번 치면 처음부터 다시 입력해야 했습니다. ㅡㅡ;;

그 다음이 천공 카드 입니다. 타자기에 '1' 이라고 치면 종이 카드에 0000 0001 이라고 입력이 됩니다.
이런 카드를 주~~욱 만들어서 차례대로 천공카드 리더기에 집어 넣는 겁니다.
그럼 리더기가 카드를 읽어서 CPU에 명령을 전달 하는 겁니다.
이 경우 카드에 데이터가 잘못 입력되면, 그 카드 한장만 새로 만들어 넣으면 되니, 처음 방식에 비해서 훨씬 효율적이었습니다.

천공 카드 다음에는 마그네틱 테입, 플로피, 하드 디스크, 시디롬, 디비디 등등의 데이터 저장 매체가 만들어 졌지만.. 기본적인 원리는 지금도 변함이 없습니다.

프로그래밍 언어라는 것은 사람이 좀 보기 편한 형식으로 명령을 써 놓으면 그것을 CPU가 알아듣는 이진 언어(기계어)로 번역을 해 주는 것을 말합니다.

초기의 직접 입력하는 어셈블리를 이용해서 어셈블리를 기계어로 번역하는 어셈블러 라는 언어가 만들어 졌고,
요걸 좀더 사람이 보기 편하게 발전 시키고, 발전시키고, 해서.. 지금의 프로그래밍 언어가 만들어 졌습니다.


아.. 회의 들어 갑니다. ㅡ,.ㅡ;;


    • 글자 크기

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 드디어 복구했습니다. 와일드바이크 심폐소생의 변!43 Bikeholic 2019.10.27 40216
132987 하나로통신에서 연락이 왔는데 pmh79 2004.11.19 199
132986 으거~~ 뽀스 2004.11.19 270
132985 산에서든 도로에서든 보행자 우선이 원칙이라고 생각합니다 easykal 2004.11.19 431
132984 맑은내님이 또 삭혔습니다. Bikeholic 2004.11.19 564
132983 앗 카매라 안들고 왔다 treky 2004.11.19 301
132982 [잡담]에혀 수능도 끝나고 인생이 느슨해졌내요 >.< 잡담전문 2004.11.19 185
132981 제가 생각하기로는 이렇게 해결하는게 훨신 낳을듯 싶습니다. 잡담전문 2004.11.19 343
132980 흠....몸다쳐 잔차 못타니.... 마티니 2004.11.19 168
132979 맹산 출입통제관련 글을 읽고. 가문비나무 2004.11.19 480
132978 [설문조사] 겨울용 통바지 길이가 짧은 분들 imcrazy 2004.11.19 391
132977 요즘 뭐해요... treky 2004.11.19 199
132976 지난 여름 그만큼 즐겼으니..ㅎㅎㅎ 십자수 2004.11.19 178
132975 잠시후 9:30 부터 양천구민회관에서 트라열 연습해요! 솔개바람 2004.11.19 190
132974 대단한 열정이십니다... 보고픈 2004.11.19 203
132973 (폭파폭파) 잠시후 9:30 부터 양천구민회관에서 트라열 연습해요! 레이 2004.11.19 248
132972 앗, 많이 다치셨나요? 레이 2004.11.19 167
132971 이번에 새로 나온... treky 2004.11.19 185
132970 방금 사고성 지름 해버렸는데.... unglimbike 2004.11.19 264
132969 흠....몸다쳐 잔차 못타니.... gbe 2004.11.19 189
132968 맛나게 드세용... ㅠ.ㅠ bloodlust 2004.11.19 166
첨부 (0)
위로