티스토리 뷰

OS

Operating System Concepts Ch.1

IT공부블로그 2019. 4. 13. 16:21
728x90
반응형

운영체제 : 하드웨어를 관리하고 하드웨어와 소프트웨어의 매개 역할



운영체제의 핵심 : 커널


운영체제는 커널과 커널 모듈로 나뉜다



운영체제의 역할은 User View와 System View로 나뉠수있다



User View


사용자가 쉽게 컴퓨터를 사용할수있도록 돕는다    

키보드, 마우스로 조작하는데있어 메모리 사용에 신경을 쓰지않도록 해준다

여러 사용자가 접근해도 자원을 공평하게 나눠준다


System View


시스템 입장에서의 운영체제는 자원 할당자이다.   

프로그램이 돌아가는데 필요한 자원을 할당해준다

입출력,  cpu시간, 메모리 관리 등 다양한 문제를 해결해야한다

시스템들을 제어하는 프로그램



Computer-System Organization



컴퓨터의 구성요소


cpu와 여러 장치컨트롤러들이 공통된버스로 연결되어있으며 하나의 메모리를 공유한다



컴퓨터의 부팅과정


컴퓨터가 최초에 부트스트랩 프로그램을 실행시킨다      부트 스트랩은 ROM or EPPROM에 존재하며 펌웨어라 불린다


부트스트랩이 시스템을 초기화하고나면 부트로더가 실행된다  (OS가 여러개 깔려있다면 선택해야 OS가 실행된다)


부트로더가 OS를 실행시킨다


커널이 로드되면서 사용자와 시스템에게 서비스를 제공하는데 이떄 커널 외부에서 제공하는 서비스가 있는데 그것은 시스템 프로세스 OR 시스템 데몬이다


시스템 프로세스가 다른 시스템 데몬을 실행시키며 여러 작업이 끝나면 부팅이 완료되고 그리고 이벤트를 기다린다




인터럽트 : 이벤트가 발생한것을 알리는것


컴퓨터는 여러작업을 동시에 처리하며 인터럽트가 발생하면 그것을 제일 먼저 처리하고 원래 하던작업으로 돌아온다


인터럽트는 하드웨어, 소프트웨어 둘다 발생할수있으며 소프트웨어에서 발생하는 인터럽트는 Trap 이라고한다 



하드웨어 인터럽트는 시스템버스를 통해 cpu에게 인터럽트가 발생한것을 알리고

소프트웨어의 트랩은 시스템콜을 발생시킨다


시스템콜 발생시 cpu는 메모리의 특정부분을 찾는다 그 부분은 인터럽트 벡터 


인터럽트 벡터는 인터럽트 서비스 루틴을 가르키는 주소를 가지고있다 


서비스 루틴은 시스템 콜을 처리하는 중요한 하드코딩 되어있는 부분이다 서비스 루틴이 실행되어 시스템콜을 처리하고나면 원래 작업하던 공간으로 되돌아온다


인터럽트는 느끼지못할정도로 빠를수도있고 느려서 기다려야할수도있다


내부인터럽트, 외부 인터럽트가 있다


현대의 OS는 대부분 인터럽트 주도적이다     인터럽트가 발생하지않으면 CPU는 대기상태에 머물러있다  


이와 반대로 폴링 방식이있다     폴링은 특정시간마다 이벤트 처리루틴을 실행한다 이렇게하면 컴퓨터의 자원을 낭비하게될수도있기 때문에 대부분 인터럽트 주도방식으로 만든다



Storage Structure


커널은 실행기(Executor)를 이용하여 윈도우의 경우 exe파일을 가져와서 메모리에 올린다


모든 프로그램은 메모리에 올라와야 실행이되며 이것을 메인 메모리(RAM)이라 한다


하지만 RAM에는 모든프로그램을 담을수있을만큼 크지않으며 휘발성 메모리이다


그래서 모든 프로그램들을 저장시킬수있는 장치 보조기억장치가 필요하다 


자기테이프, 하드디스크 등 이러한것들이 보조기억장치이다. 


휘발성 메모리에는 RAM, Cache, 레지스터가 있다

 


I/O Structure


컴퓨터에는 여러 I/O장치가 있으며 각 장치를 제어하는 제어기가 존재한다


운영체제도 장치컨트롤러를 제어하는 장치드라이버가 있다


장치드라이버가 장치컨트롤러의 레지스터를 로드한다  그리고 장치컨트롤러는 레지스터가 어떤 특정명령을 읽으면 로컬버퍼로 수행한 데이터들을 저장하고 다 끝났으면 드라이버에게 인터럽트를 보내 끝났다는것을 알린다 


그리고 드라이버가 통제권을 OS에게 돌려준다    돌려주면서 데이터도 같이 돌려주기도한다


장치데이터들을 원래 CPU를 통해 메모리에 로드했지만 CPU  자원을 너무 사용하기때문에 이제는 DMA 방식을 사용한다


메모리의 일정부분은 DMA영역으로 잡는다


 장치컨트롤러와 메모리를 연결하여 컨트롤러가 직접 메모리에 데이터를 로드한다


이렇게하면 CPU에게는 데이터가 이동하였다는 인터럽트 한번만 호출하면되니 성능이 더욱 좋아진다



Computer-System-Architecture




싱글 프로세서



메인 프로세서가 1개이며 각 기능에따라 프로세서를 추가한다 ex) 디스크 프로세서 : 디스크 일

키보드 프로세서 : 키보드 일





멀티 프로세서


메인 프로세서가 2개 이상인 형태    최근에는 거의 멀티 프로세서를 이용




멀티 프로세서 장점



1. 처리량 증가


프로세서가 증가하면 처리속도가 향상된다 

계속 추가한다고해서 속도가 계속 향상되는것은 아니다

속도 증가비율이 1:1로 빨라지는것은 아니다


2. 구축비용 절감


싱글프로세서 여러개 구축하는것보다 멀티프로세서 1개를 구축하는게 비용이 더 저렴하다

멀티프로세서는 주변장치를 공유해서 사용할수있기때문에


3. 신뢰성 증가


멀티프로세서이기때문에 프로세서 중 1개가 고장나도 속도가 조금 느려질뿐 계속 처리를 진행할수있다

이러한것을 우아한 성능저하라 하며   장애를 허용하는 장애허용시스템이라고한다 




멀티 프로세서 비대칭 프로세싱



비대칭 프로세싱은 하나의 프로세서가 보스 프로세서를 맡고 나머지가 일꾼 프로세서가 된다


보스 프로세서가 시스템을 제어하고  다른 프로세서는 보스의 지시를 받는다


부하분산(loadbalancing)을 효율적으로 처리할수있다



단점 : 보스프로세서가 고장나면 나머지 프로세서는 일을하지못한다



멀티 프로세서 대칭 프로세싱



대칭 프로세싱에는 보스가 없다 모두가 동급이다


하나의 메모리를 공유하며 동일한 작업을 병렬적으로 수행한다 


어떠한 프로세서가 고장나더라도 다른 프로세서에게 일을 넘기고 자신만 재부팅한다


요즘 대부분 컴퓨터 시스템은 대칭 프로세싱이다 비대칭 프로세서의 문제점을 보완할수있기때문에




멀티 프로세서 시스템의 문제점




멀티프로세서 시스템은 각 CPU마다 레지스터 및 캐시를 가지고있다


CPU가 여러개라면 작업을 돌아가면서 해야하는데 그러면 하나의 CPU가 일할때 다른 CPU는 놀고있다




멀티코어 디자인






CPU수가 늘어남에따라 프로세서간 통신하는데 비용이 증가하여 CPU가 늘어난다고해서 속도가 계속 증가하는것이아니다


그래서 최근 등장한 방법은 하나의 칩에 여러 코어를 추가시키는것이다


이러한 멀티 프로세서 시스템을 멀티코어라고 부른다        코어 == CPU


칩 내부의 통신이     칩 외부의 통신보다 속도가 더 빠르며  전력 또한 적게 소모한다





Clustered System



멀티프로세서 방식의 일종이며 여러개의 CPU를 한곳에 모아놓은 방식이다


멀티프로세서가 여러 CPU를 모아놓은것이라면     클러스터는 각 개별적인 노드를 모아놓은것이다


멀티프로세서는 여러 CPU가 모여 하나의 시스템을 이루지만


클러스터는 여러개의 시스템이 모여 하나의 독립적인 시스템을 만드는것


클러스터 같은 시스템을 약결합(Loosely Coupled) 라고 하며  각 노드들은 싱글프로세서 일수도있고 멀티코어 일수도있다


클러스터의 명확한 정의는 모르지만, 하나의 저장장치를 공유하며 LAN으로 연결되어있는 시스템을 클러스터 시스템이라 말한다


클러스터는 비슷한 비용의 단일 컴퓨터보다 더 나은 성능을 보여준다   


클러스터 시스템은 네트워크로 연결되어있기때문에 고성능 컴퓨터환경을 제공한다

하지만 유지보수가 어렵고 시스템 성능이 네트워크 영향을 많이받는다



클러스터 비대칭 클러스터링



시스템중 1개는 모니터링 시스템(상시대기모드)이다 시스템들이 정상적으로 동작하는지 모니터링하다가 문제가 생긴 시스템이 발생하면 문제 생긴 시스템대신 동작한다



클러스터 대칭 클러스터링


각 시스템들이 동작하는 동시에 서로를 모니터링하는 방식

하드웨어 효율을 최대한 활용할수있는 방식이다




Operating System Structure


운영체제의 중요한 핵심중 하나는 멀티프로그래밍 능력이다

멀티 프로그래밍은 여러 프로그램을 메모리에 올려서 한 프로세스가 대기상태에 빠지면 다른 프로세스의 작업을 하여 CPU의 효율을 올리는 방식이다

멀티 프로그래밍에서 좀더 발전한 시분할 방식(멀티태스킹)은 각 프로세스마다 작업시간을 설정하고 그 시간만큼만 일하고 다른 프로세스로 전환되는것이다  

이렇게 할경우 사용자는 마치 동시에 실행되는것처럼 느낀다.  반응시간을 줄이는것이 중요하다


멀티 프로그래밍, 시분할 방식은 여러 프로그램을 메모리에 올려놓는 방식이므로 

메모리가 꽉찼을경우 어떤 작업먼저 실행할지 선택해야하는 작업스케줄링 OR CPU스케줄링을 해야한다

메모리를 너무많이 사용하는경우에는 반응시간을 줄이기위해 가상 메모리를 사용한다 


가상 메모리는 실제 물리 메모리보다 더 큰 프로그램을 실행시킬수있도록 해준다


Operating-System Operations


운영체제는 인터럽트 주도적이다

인터럽트가 발생하지않으면 가만히 기다린다  

만약에 사용자 프로그램이 멋대로 하드웨어의 인터럽트를 발생시키면 문제가 발생할수있다

이러한 사용자 프로그램이 오류를 발생못시키도록 방지해야한다




Dual-Mode and Multimode Operation


운영체제는 사용자 프로그램이 함부로 시스템에 접근하지못하도록 모드를 나눈다


커널모드는 0, 유저모드는 1로 나눈다

하드웨어의 특권명령은 오직 커널모드에서만 사용할수있으며

만약 사용자 모드에서 특권명령을 실행하려한다면 트랩이 발생한다

사용자 모드에서 이걸 합법적으로 사용하기위해선 시스템콜 인터페이스를 통해 접근가능하다


Timer


운영체제는 사용자 프로그램이 제어권을 다시 넘겨주지않는경우를 방지하기위해 타이머를 사용

제어권을 보장하기위해 특정주기에 인터럽트를 발생한다

타이머의 시간은 매 ticks마다 줄어들어 0이 되면 인터럽트가 발생한다




Process Management


디스크에 있는건 프로그램 메모리에 있는건 프로세스 

프로그램은 1개지만 프로세스는 여러개 존재할수있다

프로그램은 수동적이지만 프로세스는 능동적이다

프로세스는 프로그램이 어디까지 실행되었는지 북마크하는 프로그램 카운터를 가지고있다


싱글스레드는 하나의 프로그램 카운터를 가지고있으며 

멀티스레드는 여러개의 프로그램카운터를 가지고있다

운영체제는 프로세스 관리를 위해 CPU에게 프로세스와 쓰레드를 스케줄링하고, 프로세스를 생성하거나 제거하는 활동을한며 일시정지하거나 재실행하고, 프로세스의 동기화와 통신도 제공한다




Memory Management


메모리는 방대한 바이트 배열이며 각 바이트마다 주소를 가지고있다

프로그램이 실행될떄  절대주소와 매핑되어 메모리에 로드된다

메모리 관리는 여러 요인을 고려해야하며 특히 시스템의 하드웨어 설계를 신경써야한다


운영체제는 메모리 관리를위해 메모리의 어느 부분이 사용되고있으며, 누가 사용하고있는지 확인하고 어떤 프로세스와 데이터가 메모리 안팎으로 옮겨질지 고려한다. 그리고 메모리 할당 및 해제도 운영체제가 하는일이다




Storage Management


운영체제는 저장장치의 물리적속성을 추상화하여 File이라는 논리적단위로 정의하며 파일을 물리적 저장매체에 담거나 저장장치의 파일에 접근한다


File-System Management 

운영체제는 파일관리도 한다


Mass-Storage Management

프로그램은 디스크에 담겨 있으며, 메인 메모리에 로드되어 실행된다. 많은 사람들이 제3의 저장 장치(Tertiary storage devices)를 사용한다. 저장 장치들은 WORM(Write-Once, Read-Many-Times)과 RW(Read-Write) 형식에 차이가 있다. 한번쯤 봤을 NTFS, FAT가 파일 저장 형식이며, 이를 파일 시스템(File system)이라고 부른다. 파일 시스템이 다르면 읽기는 가능하지만 쓰기가 불가능하다.



Caching



캐시는 캐시메모리를 이용하여 컴퓨터의 속도를 높이는 방법이다


CPU와 디스크의 속도차이는 상당하기떄문에 자주쓰는 데이터들을 캐시로 미리가져다 놓고 CPU와 디스크가 이걸 참조하는 방법이다

파일의 중복성이 올라가지만 속도 역시 증가한다


캐싱은 지역성의 원리를 이용하며 대표적으로 시간 지역성과 공간지역성이 있다


시간 지역성 : 한번 참조한 데이터는 다시 또 참조할 가능성이있다

공간 지역성 : 참조한 데이터의 주변데이터는 참조할 가능성이있다




I/O System


운영체제는 모든 입출력장치를 File로 취급한다 오직 장치 드라이버만이 자세한 내용을 알고있다 





Protection and Security

컴퓨터 시스템은 여러 사람들이 사용하기 때문에 보호와 보안도 매우 중요하다. 운영체제는 내외부로부터 컴퓨터를 위험하게 만드는 요소를 막기 위해 다양한 활동을 한다. (유저 모드와 커널 모드를 나눈 것도 보호의 일종이다.) 권한 확대(Privilege escalation)는 컴퓨터 시스템의 권한을 여러 층으로 나누고, 사용자의 권한을 구분해 어떤 행동이나 기준에 따라 사용자의 권한을 상승시키는 시스템이다. 참고로 권한 확대는 수직 권한 확대와 수평 권한 확대로 나눌 수 있는데, 가령 임의의 코드를 실행시켜 더 높은 권한을 얻는 행위는 수직 권한 확대, 안드로이드 루팅, iOS 탈옥은 수평 권한 확대라고 한다.



728x90
반응형

'OS' 카테고리의 다른 글

Operating System Concepts Ch.3  (0) 2019.04.20
Operating System Concepts Ch.2  (0) 2019.04.18
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함