기록공간

1-3장. 운영체제 개요 - 영속성 본문

OS

1-3장. 운영체제 개요 - 영속성

입코딩 2020. 2. 4. 22:46
반응형

RAM 같은 메모리는 휘발성(Volatile)이기 때문에 컴퓨터의 전원이 꺼지면 메모리에 있는 데이터를 모두 잃는다. 즉, 데이터가 영구적이지 않다. 그래서 컴퓨터에는 전원이 꺼지더라도 데이터가 보존되는 영구적인 데이터를 저장할 수 있는 하드웨어와 소프트웨어가 필요하다.

 

이런 것을 가능하게 해주는 하드웨어는 하드디스크나 SSD 같은 비휘발성 I/O(Input Output) 장치이고, 소프트웨어는 사용자가 생성한 파일들을 관리하는 파일 시스템(File System)이다. 파일 시스템의 모든 작업은 운영체제가 한다.

 

"Hello World!"를 파일에 저장해보자.

#include <fstream>
using namespace std;

int main()
{
    char mess[] = "Hello World!";
    
    ofstream output("hw.txt", ios::out | ios::binary);
    output.write("Hello World!", sizeof(mess));
    output.close();
}

 

다음과 같이 할 수도 있다. (open(), write(), close()는 시스템 콜로 운영체제에 있는 파일 시스템에 요청을 전달한다.)

#include <stdio.h>
#include <unistd.h>
#include <assert.h>
#include <fcntl.h>
#include <sys/types.h>

int main(int argc, char *argv[])
{
    int fd = open("/tmp/file", O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU);
    assert (fd > -1);
    int rc = write(fd, "Hello World!\n", 13);
    assert (rc == 13);
    close(fd);
    return 0;
}

텍스트 형식 파일로 "Hello World!"가 저장되었다

데이터를 디스크에 쓰거나 읽기 위해 운영체제에서 하는 작업은 다음과 같다. 먼저 새 데이터가 들어갈 위치를 디스크에서 찾는다. 그리고 저장장치에 I/O요청을 한다. 이렇게 해서 사용자는 원하는 데이터를 디스크로부터 읽거나 디스크에 쓸 수 있게 된다. 

 

그리고 파일 시스템은 사용 중에 컴퓨터 크래시로 인한 데이터 손상을 신뢰성 있게 처리한다. 저널링(Journaling), 쓰기-시-복사(Copy on Write), 그리고 쓰기 순서 조정 등의 방법으로 말이다. 

반응형

'OS' 카테고리의 다른 글

2장. 가상화  (0) 2020.02.07
1-4장. 운영체제 개요 - 설계 목표와 역사  (0) 2020.02.04
1-2장. 운영체제 개요 - 병행성  (0) 2020.02.04
1-1장. 운영체제 개요 - CPU 가상화  (0) 2020.02.04
1장. 운영체제의 개요  (0) 2020.02.04
Comments