ABOUT ME

미디어, 영상 관련 블로그

Today
Yesterday
Total
  • [ai]인공지능 입문과정 : 프로그램과 프로세스의 차이
    카테고리 없음 2024. 4. 11. 06:54

    프로그램과 프로세스의 차이

     

    ● 프로그램

        ○ 어떤 데이터를 사용하여 어떤 작업을 할지 그 절차를 적어 놓은 것
        ○ 하드디스크 같은 저장 장치에 보관하고 있다가 마우스로 더블클릭하면 실행


    ● 프로세스
        ○ 프로그램으로 작성된 작업 절차를 실제로 실행에 옮긴다는 의미 (‘실행한다’고 표현)
        ○ 해당 코드가 메모리에 올라와서 작업이 진행된다는 의미

     

    ● 팟플레이어는 하드디스크에 저장된 프로그램 중 하나
        ○ 저장 장치에 보관된 정적인 상태


    ● 팟플레이어를 실행시키면 프로세스가 됨
        ○ 메모리에 올라와서 작업을 수행하는 동적인 상태

     

    ● 일괄 처리(batch) 방식
        ○ 한 번에 작업을 1개만 처리하는 시스템
        ○ 컴퓨터 초창기의 운영체제나 MS-DOS가 사용하던 방식


    ● 시분할(timesharing) 방식
        ○ 프로세스 여러 개가 아주 짧은 시간 동안 CPU를 사용하는 방식
        ○ 프로세스 여러 개가 동시에 실행되는 것처럼 보이는 작업

     

     

    프로그램의 상태

     

    ● 프로세스 제어 블록(Process Control Block,PCB)
        ○ 운영체제에서 주문서에 해당하는 것

     

    ● 프로세스와 프로그램 관계

        ○ 프로세스 =  프로그램 + 프로세스 제어 블록

        ○ 프로그램 =  프로세스 - 프로세스 제어 블록

     

    ● 생성 상태(create status)
        ○ 프로세스가 메모리에 올라와 실행 준비를 완료한 상태, PCB 생성


    ● 준비 상태(ready status)
        ○ 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태

     

    ● 실행 상태(running status)
        ○ 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태
        ○ 자신의 작업이 끝날 때까지 준비 상태와 실행 상태를 반복

     

    ● 완료 상태(terminate status)
        ○ 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료 상태로 진입
        ○ PCB 반납

     

     

    ● 메모리 관리
        ○ 폰노이만 구조의 컴퓨터에서 모든 프로그램은 메모리에 올라와야 실행 가능
        ○ 과거 일괄 처리 시스템에서는 한 번에 작업 하나만 처리했기 때문에 메모리 관리가 어렵지 않음
        ○ 오늘날 시분할 시스템에서는 운영체제를 포함한 여러 프로세스가 한꺼번에 메모리에 올라오기 때문에 메모리 관리가 복잡

     

    ● 메모리 구조
        ○ 운영체제도 프로세스이기 때문에 메모리로 올라와야 실행 가능
        ○ 메모리 관리 시스템(Memory Management System, MMS)
            ▷ 운영체제 영역과 다른 작업 영역 침범 막기

               자리 부족 시 빈 공간 확보

     

    ● 메모리 관리자가 하는 일
        ○ 가져오기 작업
            ▷ 프로세스와 데이터를 메모리로 가져오는 것
        ○ 배치 작업
            ▷ 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 것
            ▷ 배치 작업 전에 같은 크기로 자르느냐, 프로세스 크기에 맞게 자르느냐에 따라 복잡성이 달라짐
        ○ 재배치 작업
            ▷ 꽉 차 있는 메모리에 새로운 프로세스를 가져오려고 오래된 프로세스를 내보내는 작업

     

     

    가상 메모리

     

    ● 메모리 크기를 고려한 개발
        ○ 사용자 메모리는 1GB부터 16GB까지 다양
        ○ 프로그램에 따라 작은 메모리에서는 동작하지 않을 수 있음
        ○ 메모리 크기를 고려하여 프로그래밍하기는 매우 어려움

     

    ● 가상 메모리(virtual memory)란?
        ○ 사용자가 가지고 있는 실제 메모리 크기와 프로세스가 올라갈 메모리 위치를 신경 쓰지 않고 프로그래밍을 하도록 지원하는 메모리 시스템
        ○ 실제 메모리 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술

     

    ● 가상 메모리 구성
        ○ 가상 메모리는 <프로세스가 바라보는 메모리 영역>과 <메모리 관리자가 바라보는 메모리 영역>으로 나뉨
        ○ 이론적으로 가상 메모리 크기는 무한대

     

    ● 스왑 영역(swap area)
        ○ 메모리가 모자라서 쫓겨난 프로세스를 저장 장치의 특별한 공간에 모아두는 영역
        ○ 하드디스크 같은 저장 장치는 장소만 빌려주고 메모리 관리자가 담당

      ○ [최대 절전 모드] 사용 시 CPU와 메모리의 전력 공급을 끊기 때문에 현재 메모리에 있는 데이터를 옮겨 가는 곳이 스왑 영역

     

    ● 가상 메모리 크기
        ○ 가상 메모리 시스템은 실제 메모리와 스왑 영역을 활용하여 메모리 크기에 상관없이 모든 프로그램을 실행할 수 있는 시스템

        ○ 스왑 영역 크기는 사용자가 조절 가능하나 너무 작게 하면 프로그램 실행이 불가능할 수 있음

     

     

    파일

     

    ● 확장자
        ○ 파일은 논리적인 데이터 집합으로 하드디스크나 CD 같은 제 2 저장장치에 저장
        ○ 파일 구분은 확장자를 사용하고, 확장자에 따라 파일 성격 구분
            ▷ ** 표기 : 파일이름.확장자
        ○ 초창기 운영체제에서는 파일 이름은 여덟 글자, 확장자는 세 글자로 제한
        ○ 파일 이름
            ▷ 마지막 마침표 다음 글자를 확장자로 인식
            ▷ 현재 경로 이름을 포함하여 최대 255자
            ▷ \, /, :, *, ?, “, <, >, | 등은 사용 불가

     

     

    ● 실행 파일과 데이터 파일
        ○ 실행 파일 : 운영체제가 메모리로 가져와 CPU를 사용하여 작업하는 파일 (사용자 요청으로 프로세스가 되는 파일)
        ○ 데이터 파일 : 프로세스나 응용 프로그램이 사용하는 데이터를 모아 놓은 파일

     

    ● 연결 프로그램
        ○ 데이터 파일을 더블클릭하면 실행되는 응용 프로그램

     

    ● 파일과 디렉터리
        ○ 관련 있는 파일을 하나로 모아 놓은 곳
        ○ 여러 층으로 구성 가능(디렉터리 밑에는 또 다른 디렉터리를 만들 수 있음)
        ○ 최상위 디렉터리를 루트 디렉터리(root directory)라고 함

     

     

    ● 계층 구조
        ○ 역슬래시(\)는 루트 디렉터리를 의미
        ○ 한글 자판에서 역슬래시는 \(원화 표시)로 대체
        ○ 디렉터리 헤더에는 디렉터리 이름, 만든 시간, 접근 권한 등 정보가 기록되어 있음

     

    ● 파일 테이블
        ○ 파일이 저장된 파일 이름, 위치 정보 등이 저장
        ○ 모든 운영체제는 고유의 파일 테이블을 가짐
        ○ 윈도우는 FAT(File Allocation Table)나 NTFS, 유닉스는 i-node 같은 파일 시스템 운영

     

     

    파일 시스템

     

    ● 섹터
        ○ 하드디스크의 물리적인 구조상 가장 작은 저장 단위
        ○ 섹터마다 주소를 부여하면 너무 많은 양의 주소가 필요하기 때문에 파일 관리자는 여러 섹터를 묶어 하나의 블록으로 만들고 블록 하나에 주소 하나를 배정


    ● 블록
        ○ 저장 장치에서 사용하는 가장 작은 단위
        ○ 한 블록에 주소 하나를 할당
        ○ 데이터는 운영체제와 저장 장치 간에 블록 단위로 전송

     

    ● 조각화(단편화)
        ○ 하드디스크를 처음 사용할 때는 데이터가 앞부터 차곡차곡 쌓이지만, 사용하다 보면 파일이 삭제되면서 중간중간 빈 공간이 생김
        ○ 하드디스크에 조각이 많이 생기면 큰 파일을 여러 조각으로 나누어 저장
        ○ → 성능 저하

     

    ● FAT 파일 시스템 구조
        ○ 왼쪽 테이블은 파일 정보와 함께 파일의 시작 블록 정보를 가짐
        ○ 파일 B : 2 → 4 → 12 → 8(null)번 블록
        ○ 파일 C : 0 → 3 → 10 → 6 → 9 → 7 → 11 →14(null)번 블록

     

    ● FAT32와 NTFS
        ○ 윈도우는 파일 시스템으로 FAT32 또는 NTFS를 사용
        ○ FAT32는 32GB까지 지원하고 파일 하나의 크기가 4GB로 한정
        ○ USB 메모리는 대부분 FAT32를 사용
            ▷ 4GB보다 큰 파일을 저장하려고 하면 빈 공간이 있어도 ‘빈 공간 없음’이라는 메시지를 표시
            ▷ FAT32가 4GB 이상의 파일을 지원하지 않아 발생하는 문제
            ▷ NTFS 파일 시스템으로 바꾸면 해결
            ▷ 대신 NTFS는 자동차나 오디오와 같은 기기에서 인식이 안될 수 있음.

     

     

    빈 공간 관리

     

    ● 빈 공간 리스트(free block list)
        ○ 디스크에 파일을 저장할 때 모든 테이블을 뒤져 빈 공간을 찾는 것은 비효율적
        ○ 빈 공간을 효율적으로 관리하려고 파일 시스템은 빈 블록 정보만 모아 놓은 빈 공간 리스트(free block list)를 유지

     

    ● 파일 B를 지우는 경우 빈 공간 리스트의 변화
        ○ B가 사용한 2, 4, 12, 8번 블록의 내용이 지워지지 않고 빈 공간 리스트에 삽입
        ○ 파일을 삭제하면 실제 파일이 지워지는 것이 아니라 ‘파일 테이블의 헤더를 삭제하고 사용한 블록을 빈 공간 리스트에 등록함

     

    ● 데이터 관리
        ○ 파일을 지우면 내용이 사라지는 것이 아니라 파일 테이블에서 파일 정보만 삭제
        ○ 새로운 파일을 저장하면 방금 지운 파일 공간에 덮어 쓰는 것이 아닌 앞의 빈 공간부터 덮어 씀
        ○ 스마트폰에서 사용하는 클라우드 저장 장치는 자신의 스마트폰에 있는 전화번호부, 사진, 파일을 클라우드로 전송
        ○ ** 따라서 데이터를 지워도 클라우드로 전송한 데이터를 지우기 전까지는 시간 차이가 있을 수 있 음

Designed by Tistory.