CS 88

[운영체제] 쓰레드 ( Thread )

프로세스는 두 가지 특성이 있다. 1. 자원 소유권 프로세스는 할당받은 자원을 소유하는 일종의 컨테이너이다. ( 주소공간, 프로그램 코드, 전역변수, Heap, OS 자원 ) 2. 스케줄링 / 수행 프로세스는 우선순위를 가지며 OS에 의해 스케줄링되어 처리기를 할당받는다. 프로세스는 방대한 크기를 가진다. 정해진 시간에 한번에 처리가 불가능하므로 작은 단위로 나누는데, 이때 나누어진 경량 프로세스가(light process)가 쓰레드(Thread)이다. 쓰레드는 OS가 처리기에 디스패칭하는 단위이다. 하나의 프로세스는 여러 개의 쓰레드로 나뉜다. 그러나 자원 소유권은 하나의 프로세스가 갖는다. 그러므로 여러 개의 쓰레드는 하나의 자원을 공유한다. 이렇게 하나의 프로세스 내에서 여러 개의 쓰레드가 동작할 ..

CS/OS 2021.10.11

[운영체제] 프로세스 제어구조

프로세스 제어는 3가지 작업으로 나뉜다. 1) 수행모드 2) 프로세스 생성 3) 프로세스 교환 ▷ 수행모드 처리기의 수행모드는 두 가지로 나뉜다. 1. 커널모드 2. 유저모드 커널모드란 처리기가 커널 명령어를 실행하는 상태를 의미하고 유저모드란 처리기가 유저 명령어를 실행하는 상태를 의미한다. CPU는 PSW( 프로그램 상태 워드 ) 레지스터로 시스템 상태를 저장하는데, 이때 PSW 중 1bit가 수행모드를 나타낸다. 0이면 사용자모드, 1이면 시스템모드이다. 그렇다면 커널 명령어와 유저 명령어를 두 가지 모드로 구분하여 처리하는 것일까? 지난 포스팅을 예로 들어보겠다. 준비큐에 들어있는 프로세스는 OS의 제어에 따라 처리기를 할당받아 처리된다. PCB1 할당 -> 디스패치 -> PCB2 할당 -> 디스..

CS/OS 2021.10.11

[운영체제] 프로세스 상태

한정된 자원( 처리기 및 메모리 )을 여러 프로세스가 공유하려면 OS는 한 가지 프로세스가 처리기 및 메모리를 독점하지 않고 인터리빙(Interleaving) 할 수 있도록 지원해야한다. OS의 주요 업무는 2가지이다. 1. 프로세스 수행을 인터리빙하는 패턴 결정 2. 프로세스 자원 할당 2가지 주요 업무는 프로세스 상태와 관련있다. 프로세스 상태 프로세스 상태는 기본적으로 두 가지로 나뉠 수 있다. 수행중이냐 비수행중이냐. 지난 포스팅에서 다루었던 바와 같이, OS는 PCB 자료구조로 프로세스를 관리한다. 준비큐에 PCB가 대기하면 비수행이고 처리기를 할당받으면 수행중이다. OS는 프로세스를 Switch하는 디스패처(Dispachter) 프로그램을 이용하여 처리기를 다른 프로세스에 할당한다.(디스패치)..

CS/OS 2021.10.11

[운영체제] PCB의 구성요소

처리기는 하드웨어 자원으로 한정되어 있다. 그러므로 여러 프로세스가 처리기를 사용하려면 이용순서를 정해야하는데, 이를 스케줄링(Scheduling)이라 부른다. OS가 스케줄링을 담당한다. OS는 PCB를 통해 프로세스를 식별한다. 그러므로 PCB에는 처리기 사용을 위한 모든 정보가 들어있어야 한다. 위 그림은 처리기 문맥교환(Context Change)이 일어나는 간략한 다이어그램이다. OS는 스케줄링을 위해 Queue 자료구조를 이용한다. Queue 자료구조에는 PCB의 주소가 들어간다. PCB 객체가 큐에 들어가면 Queue 자료구조가 방대해지기 때문에 비효율적이다. Queue 자료구조에 저장된 PCB 주소가 디스패치되면 본격적인 처리기 문맥교환이 일어난다. 그럼 PCB에는 어떤 정보들이 저장되어야..

CS/OS 2021.10.11

[ 운영체제 ] PCB ( Process Control Block )

프로세스(Process)란? 하드웨어는 한정되지만 소프트웨어는 무한하다. 운영체제는 하드웨어 자원이 효율적으로 사용되도록 소프트웨어를 번갈아 가면서 실행시켜야 한다. 하드웨어 중 가장 핵심이 되는 부품은 CPU이다. 이를 '처리기'라 부르겠다. 처리기는 프로그램을 '프로세스(Process)' 단위로 처리한다. 그러므로 프로그램은 '프로세스'로 구현되기에 프로세스를 프로그램의 '인스턴스'라고도 부른다. 운영체제는 처리기의 이용률을 극대화 할 수 있도록 여러 프로세스 수행을 인터리빙(interleaving)한다. 위 그림은 메모리 인터리빙의 모습이다. bank1, bank2, bank3, bank4 는 서로 다르지만 메모리 주소를 번갈아가면서 부여받는다. 그래야 처리기가 여러 개의 프로세스를 순차적으로 접근..

CS/OS 2021.09.29

[DB] 논리적 설계 모델

지난 포스팅에서 개념적 설계 모델을 알아보았다. 개념적 설계 모델은 인간이 이해하기 쉽도록 DB를 설계하는 방법이다. 그럼 이를 DBMS에 맞는 논리적인 설계로 변환해야한다. 관계형 데이터 모델에 맞게 DB를 설계해보자. 종속적 관계 개념적 설계 모델에서 종속적 관계는 약성 개체 집합이 강성 개체 집합에 종속됨을 표현했다. 그럼 이를 테이블로 나타내어 보자. 개체 집합 => 테이블 개체 집합의 속성 => 필드 기본키 => 기본키 약성 개체 집합은 강성 개체 집합에 종속된 관계로 독자적인 기본키를 갖지 못한다. 종속된 강성 개체에 따라 기본키가 달라진다. 기본키는 강성 개체를 특정 지을 수 있는 여러 속성을 묶은 부분키와 종속된 개체의 기본키를 묶어 만들어 진다. 강성 개체 집합 : 강좌 ( course_..

CS/DB 2021.06.25

[DB] 시스템 권한 및 뷰(View) [Oracle]

Oracle DBMS 기준으로 권한은 시스템 권한과 객체권한으로 나뉜다. 지난 두 개의 포스팅에서 객체 권한과 관련된 내용을 다루어 보았다. 이번 포스팅에서는 시스템 권한을 다루어 볼까 한다. 시스테권한(System Privileges)은 '조작'보다는 '생성'과 '삭제'와 같이 시스템 구성에 영향을 끼치는 명령을 다루는 권한이다. 그러므로 데이터 관리자 권한이 있는 계정이 아니면 접근할 수 없는 중요한 권한이다. (SYS, SYSTEM) 사용자의 생성,삭제 (CREATE user, DROP user) 세션 생성 (CREATE session) (DB 로그인 권한) 테이블 생성, 삭제, 읽기 권한 (CREATE, DROP, SELECT) 뷰 생성 삭제 권한(CREATE, DROP) 테이블 스페이스 생성 삭..

CS/DB 2021.06.25

[DB] 개념적 설계 모델

데이터베이스의 개념적 설계는 사람이 이해할 수 있는 설계이다. 데이터베이스의 구조를 사람의 관점에서 접근해보자. 개념적 설계의 핵심 요소 출처 입력 개념적 설계 모델의 핵심요소 3가지는 아래와 같다. 1. 개체( Entity ) 2. 속성 ( Attribute ) 3. 관계 ( Relation ) 개체는 현실에서 물리적으로 추상적으로 존재하는 실체이다. 속성은 개체가 가지고 있는 특성을 의미한다. 동일한 특성을 가진 개체들이 모이면 개체 집합(Entity Set)이 된다. 관계형 데이터 모델에서 개체 집합을 '테이블'이라 부르고 '속성'을 필드라 부른다. 같은 대상을 지목하지만 관점이 다르므로 특징도 다르다. 사용자 관점에서 보면 '속성'은 다중값이나 복합적인 특성을 가질 수 있지만 데이터베이스 관점의 ..

CS/DB 2021.06.25

[DB] 데이터베이스 권한(ROLE) [Oracle]

지난 포스팅에서 GRANT와 REVOKE 명령어를 통해 사용자에게 권한을 부여하는 방법에 대해서 다루어 보았다. 이번 포스팅에서는 ROLE에 대해서 다루어 볼것이다. DB를 이용하는 사용자가 적다면 하나씩 권한을 부여할 수 있겠지만 사용자가 많다면 일일이 권한을 부여하는 것은 부담이 된다. 그래서 사용자 그룹을 만들어 그룹별로 권한을 부여하면 효율적이다. 여기서 사용자의 그룹이 롤( Role)이 된다. 롤은 데이터베이스 관리자만 생성할 수 있다. 1. 롤 생성 CREATE ROLE CREATE ROLE employee; CREATE ROLE manager; 이렇게 롤을 만든 다음, 사용자에게 권한을 부여할 때 DML이나 REFERENCES 같은 객체에 대한 권한을 부여하는 것이 아니라 ROLE을 부여하는..

CS/DB 2021.06.25

[DB] 데이터베이스 권한(GRANT, REVOKE) [Oracle]

데이터베이스 권한은 크게 시스템 권한과 객체 권한으로 나뉜다 (Oracle DBMS 기준). 시스템 권한은 DB를 구성하는 시스템과 관련된 권한이다. 사용자를 생성한다던가 테이블이나 오라클 DBMS의 경우 테이블스페이스 생성과 같이, 시스템을 구성하는 권한을 의미한다. 시스템 권한은 중요하므로 데이터베이스 관리자 권한이 있는 계정만 접근 가능하다.(SYS, SYSTEM) 시스템 권한은 시스템을 구성하는 요소를 생성하는 권한이라면 생성된 요소를 조작하는 권한은 객체권한이라 부를 수 있다. 데이터베이스의 객체란 데이터를 저장할 수 있는 논리적 단위를 의미한다. 대표적으로 테이블, 뷰, 인덱스 등이 있다. 그러므로 데이터가 저장되는 논리적 단위의 조작 범위에 따라서 권한이 부여된다. 이번 포스팅에서는 객체권한..

CS/DB 2021.06.25