본문 바로가기

반응형

전체 글

(201)
나만의 운영체제를 만들어본다 - GEEKOS 설치 제목은 거창하지만 UMD(메릴랜드대학) 에서 개발한 GEEKOS를 기반으로 한 운영체제의 기본정도만 구현을 하는 프로젝트가 될것이다. 설치및 구동환경은 우분투9.10 을 기반으로 동작한다. geekOS를 구동함에 있어서 bochs라는 일종의 에뮬레이터를 사용하여 작동시키도록한다. Vmware 상에서 설치해본결과 이 bochs 란 에뮬이 일종의 플로피디스크 이미지(fd.img)를 만들어서 'a' 드라이브에 해당 이미지를 직접 마운트하여 사용을 하게된다. 그러므로 플로피디스크를 Vmware의 하드웨어 옵션에 꼭 추가를 해야 한다.  root 계정 암호변경 우분투 9.10의 경우에는 보안상의 이유로 관리자 계정의 최초 비밀번호를 랜덤하게 정한다. 그렇기 때문에 우리는 이 관리자 계정을 변경해주어야 설치를 조..
[네트워크프로그래밍]fork() 함수 이용한 simple program #include #include #include #include int main(){ pid_t pid, child; int a = 5, b = 3; int state; pid = fork(); if(pid == 0){ b += 1; printf("Child process id = %d\n", getpid()); printf("a = %d, b = %d\n", a, b); sleep(10); } else{ do{ a += 1; sleep(3); puts("\n3 sec wait\n"); child = waitpid(pid,&state, WNOHANG); }while(!child); } printf("child proess id = %d\n return value = %d\n",child, a*b); re..
[운영체제론]예습정리(Chp5,6 / 프로세스과정) Q) 크기가 큰 HDD에서 프로세스를 실행시키기위하여 어떠한 방법으로 디스트의 불특정 영역에 존재하는 원본 Program을 찾아내는가? => 직접 HDD의 모든 범위를 검색하여 Program을 찾는것은 시간적으로도 손해이고 많은 제약이 따를 것이다. 자료구조에서 배웠던 개념인 linked-list를 활용한다면, 이러한 문제를 해결할 수 있을 것 같다. program이 최초에 설치될 당시 각각의 program마다 고유의 번호가 기재되러 있는 HeadNode를 지정하고, program이 호출이되어 process화 될때에 이 node에기재되어 있는 주소에 저장된 파일을 load해와 memory에 적재할 것이다. Q) 대기중인 process를 Queue에 저장하는데, 이 때 우선순위가 더 높은 prcess가 들..
[운영체제론]3월 4일 수업정리(프로세스, 인터럽트, BUS) 운영체제의 성질중에는 동시성(Concurrency)이 존재한다. 흔히들 동시성이라고 하면 프로세스의 동시동작을 한 예로 생각하는데 이것은 문맥교환(context switch)으로 인한 현상이다. 문맥교환은 실제로 동시동작하는것이 아닌 빠른시간내에 번갈아 가면서 프로세스를 실행시키는 방법으로 Multiple Process를 구현한다. 이 과정에서 그 교환시간이 long term일 경우에 Memory상에 이전에 실행중이었던 프로세스의 상태를 저장한다. term 이 short term일 경우에는 Memory상이 아닌 register 상에 그 데이터를 저장 하도록 한다. ? Register 도 Memory의 일종 아닌가? : 아마도 이 설명상에서의 Memory는 RAM을 말하는 것인듯하다. 위의 방법과 같은 ..
[정보보호개론]보안의 3대요소 컴퓨터 보안을 하는데에 있어서 최소한 세가지의 원칙이 지켜져야 하는데 그 원칙은 다음과 같다. Confidentiality(기밀성) / Integrity(무결성) / Availability(가용성) 위의 세가지는 각기 독립적으로도 역할을 하지만 사실상의 정보보호나 보안에 있어서 서로 깊은 연계성을 가지고 동시에 동작한다. 기밀성의 경우에는 정보의 소유자가 원하는대로 비밀이 유지되어야 하는 원칙을 말하는 것으로써, 허기되지 않은 유저나 노드에 데이터나 전송되거나 접근이 허가되는것을 방지하는것이다. 이러한 기밀성을 유지하기 위해서 반드시 비인가자가 아닌 인가자에게만 접근이 허용되어야 한다. 무결성은 정보의 전송과정에서 비인가자에 의한 정보의 변경, 삭제, 생성등이 원천적으로 봉쇄되어 전송되는 데이터의 정확..
리눅스 쉘의 이해와 변경 쉘을 설명하면서 흔히 커널과 같이 설명을 하고는 한다. 하지만 쉘은 운영체제의 전부라고 할 수 있는 커널의 한 부분이 아닌 독립된 하나의 유틸 또는 프로그램으로써, 쉘이라는 그이름과 같이 운영체제의 핵심인 커널을 둘러싸고 있는 껍데기에 불과하다. 간단히 그림으로써 나타내고자 한다면, 왼쪽의 그림과 같은 형태를 이루고 있다고 생각하면 되겠다. 우리가 운영체제를 사용하는데 있어서 작은 작업 하나에도 명령어들이 발생하고 그렇게 발생하는 명령어들을 처리해야 하는데 있어서 쉘의 역할은 바로 유저와 커널간의 통역이라고 생각하면 간단하겠다. 유저가 내린 명령은 쉘을 통하여 커널에 전달되어지고 커널은 쉘을 통해 전달된 명령어를 통해서 시스템을 제어할수가 있게 되는것이다. 리눅스에서 사용하고 있는 쉘의 종류는 다양하며..
리눅스 기본명령어 - date(날짜출력 명령어) date 명령어는 이름에서와 같이 설정한 날짜를 출력하는 명령어이다. which명령어를 사용하여 명령어의 경로를 알아보면 bin/date 에 저장되어 있다는 것을 알수있다. 도스에서의 Dir 과같이 디렉토리내의 목록을 나타내는 명령어인 ls를 사용하여 date가 저장되 bin 안에 정말 명령어가 존재하는지 확인해 보겠다. date명령어가 존재한다는것을 확인하고, 리눅스 터미널상에서 녹색으로 출력되는 것들은 명령어들이라는 생각이 든다. cat, grep, gzip 등의 명령어도 보이는것을 보아 확실하다. date 명령어의 포맷 형식과 기타 날짜를 변경하는 방법등은 help를 통해 확인이 가능하다.
리눅스 기본명령어 - which(명령어 경로 확인) which 명령어는 리눅스에서 사용하는 명령어들의 PATH를 검색하여 출력시키는 명령어입니다. which 명령어도 하나의 명령어로서 저장되어 있는 경로는 다음과 같습니다. /usr/bin/which 사용법은 which [명령어] 의 형식으로 사용하면 되겠습니다. 위와같이 환경변수상에 등록되어있는 명령어의 PATH 즉 저장경로를 알려줍니다. 또한 이러한 리눅스 기본명령어의 경우는 당연히 다른 버전의 리눅스에서도 그 경로가 같습니다. 아래는 페도라 12 에서 실행한 화면입니다.

반응형