이번 포스팅에선 JAVA 설치 및 환경변수 설정, eclipse 설치에 대해 정리해 보겠습니다.

 - window 11로 넘어오면서 설정하는 진입 경로가 많이 달라졌네요!


1.JAVA 설치

    1-1.자바 사이트 접속

    -http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=ocomen 

    1-2.컴퓨터 OS환경에 맞게 선택하고, JAVA 설치 파일을 다운받습니다. 

    

    1-3.다운받은 파일을 실행하여, 쭉 NEXT를 눌러 설치합니다. 

 

    1-4.JAVA설치를 마무리합니다. 

 

2.환경변수 설정

  - 이제 환경변수 설정을 해보겠습니다.

    2-1.윈도우 작업표시줄에 윈도우 아이콘을 우클릭합니다. 

    2-2.메뉴 中 설정으로 진입합니다. 

 

    2-3. 진입 순서입니다. 

           좌측 시스템 탭 클릭 > 제일 하단 정보 클릭 > 중간 고급 시스템 설정 클릭 > 환경 변수 클릭

 

    2-4.하단 시스템 변수에 새로 만들기 버튼을 클릭합니다. 

 

    2-5.변수 이름  JAVA_HOME // 변수 값 C:\Program Files\Java\jdk-21    

           (변수 이름은 고정, 변수 값은 설치된 jdk 경로)

 

    2-6.시스템 변수에 이미 있는 Path 변수를 더블클릭 혹은 편집을 누릅니다. 

 

    2-7. 새로 만들기 버튼을 누르면 좌측 변수들 밑에 텍스트 입력창이 생깁니다. 

             %JAVA_HOME%\bin  를 오타없이 입력 후 확인 버튼을 누릅니다. 

       

    2-8.시스템 변수를 하나더 추가할 겁니다. 

   

 

    2-9. 변수 이름 : CLASSPATH  // 변수 값 : %JAVA_HOME%\lib

           입력 후 확인을 누릅니다. 

 

    2-10. 자바 설정이 완료 되었습니다. 

              제대로 설치되었는지 확인하겠습니다. 

              작업표시줄 윈도우 검색창에 >  cmd 입력 > enter를 누릅니다. 

              > 'java',  'javac', 'java -version'  명령어를 실행하여 정상 기동을 확인합니다. 

'IT > JAVA' 카테고리의 다른 글

JAVA 설치, 환경변수 설정, eclipse 설치  (0) 2017.03.28

주변에서 많이들 취득하는 자격증이 된 거 같다. 취준을 할 때부터 지금까지 주변에서 많이 취득하기에 자격증을 취득할 생각을 했다. 먼저 취득한 지인들 후기로는 많은 시간은 할애할 필요가 없다 하여 큰 부담은 없었다. 업무 중 쿼리를 자주 사용하기에 공부는 크게 2단계로 생각을 했다.
1. 이론서로 한번 읽어보고,

2. 기출문제 풀어보기

 

총 공부한 시간은 1주일이 조금 안되는 거 같다. 공부도 퇴근 후 운동하고 남은 시간에 했기에 많이 하지 못했다. 우선 이론서는 새로 배우는 내용이어서 이론을 이해 후 정리하는 것이 아니고, 기존에 사용하고 알던 내용들을 책을 보면서 한번 정리하는 느낌이어서 쭉쭉 읽어나갔다. 

SQL 전문가 가이드 The Guide for SQL Professional
국내도서
저자 : 한국데이터진흥원
출판 : 한국데이타베이스진흥센타 2013.06.17
상세보기

쭉 읽고나서는 

SQL 자격검정 실전문제
국내도서
저자 : 한국데이터진흥원
출판 : 한국데이터진흥원 2016.11.17
상세보기

이 책으로 문제를 풀었다. 문제를 풀어보니 정리되었다고 생각했는데 헷갈리는 개념들이 있어 그 부분들만 중점적으로 정리했다. 

sql을 자주 접해 친숙하신 분들은 시간을 많이 투자하지 않고 취득할 수 있는 자격증인 거 같다. 아직 생소하신 분들은 명령어들 마다 이해하고 외우려면 조금 걸리게 기간을 좀 더 넉넉히 잡으면 좋을 거 같다. 또 공부는 평소 잘 안 쓰이는 명령어들도 잘 정리해야 할 거 같다. 그리고 조인에 대한 내용에 익숙해지면 시간이 넉넉할 거 같다. 1장에 있는 내용들은 쭉 읽으며 이해만 하면 될꺼같다. 

 

 

'IT > 자격증' 카테고리의 다른 글

데이터 분석 준전문가(ADsP) 후기  (0) 2017.06.27

1. Oracle DB 설치

1-1. 오라클 사이트 접속

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html




1-2. File1,File2 모두 다운 받은 후 압축을 풀어줍니다.


1-3. 그리고 더 용량이 적은 2번째 폴더에 다음 경로 winx64_12102_database_2of2\database\stage\Components에 

존재하는 폴더를 복사합니다. 



1-4. 복사한 파일들을 첫 번째 폴더에 같은 경로인 winx64_12102_database_1of2\database\stage\Components로 

복사합니다. 



1-5. 이후 폴더를 원하는 위치로 옮기고(필자는 D드라이브로 옮겼습니다. ) 폴더에 들어가 setup을 실행합니다. 

  



1-6. 다음을 누르면 설치를 진행하면서 데이터베이스를 설치한 적이 없다면 데이터베이스 생성 및 구성을 누르고 진행합니다. 

 



1-7. windows 계정은 편하신 것으로 선택하시면 됩니다. 





1-8. 다음으로는 비밀번호를 설정하고 진행합니다. 이후 실제로 설치할 때는 상당히 시간이 걸리니 기다리지 않기를 

권장합니다. 





1-9. 설치가 안료되고 나면 다음과 같은 결과 창이 뜰 것입니다. 


1-10. 이후 시작 메뉴에서 sql plus를 실행 합니다. 


1-11. 사용자명 에는 'system'을 비밀번호는 '설치 중 설정한 비밀번호'를 입력하고 접속됨을 확인합니다. 

 

오늘 결과가 나온 데이터 분석 준전문가(ADsP)자격증 후기를 포스팅하려 합니다. 


작년에 프로젝트에서 Apriori 알고리즘을 적용한 연관분석을 구현했었습니다. 

그 당시 데이터 분석이라는 분야에 공부도 얕게나마 해보았고 조금만 공부하면 되겠지라는 가벼운 마음에 도전했습니다. 

그래서인지 처음 시험본 12회 시험에서 4점이 모자르게 떨어졌습니다. ㅠ 
12회에서는 10일 정도 공부 했었고, 



2017 데이터분석 준전문가 ADsP
국내도서
저자 : 윤종식
출판 : 데이터에듀 2016.12.28
상세보기



이 책으로 공부했습니다.  





그렇게 떨어지고 안따기에는 아깝고 해서 13회 시험에 다시 응시했고 



정말 턱걸이도 이런 완벽한 털걸이로 합격했습니다. ㅠ 

13회 시험때는 딱 1주일 전부터 다시 위에 링크한 책으로 쭉 한번 보고 책에 있는 문제 다시 풀어보고 갔었습니다. 


ADsP 치려고 하시는 분들은 좀 더 길게 준비하고 가셔서 널널하게 붙으시길...... 

아, 책이 개정판이라고 되어있음에도 오탈자가 정말 많았습니다. 참고해서 보세요


'IT > 자격증' 카테고리의 다른 글

SQL 개발자(SQLD) 후기  (0) 2019.07.31

이번 포스팅에선 JAVA 설치 및 환경변수 설정, eclipse 설치에 대해 정리해 보겠습니다.

1.JAVA 설치

1-1.자바 사이트 접속

-http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=ocomen




1-2.동의를 누르시고 각자 컴퓨터 사양에 맞게 다운받습니다. 



1-3.다운받으신 후 쭉 NEXT를 누르시면 설치됩니다.




1-4.자바 설치를 마무리합니다.




2.환경변수 설정

이제 환경변수 설정을 해보겠습니다.


2-1.컴퓨터의 속성으로 갑니다.



2-2.고급 시스템 설정을 누릅니다.



2-3.환경 변수를 누릅니다.



2-4.새로 만들기를 누릅니다.



2-5.JAVA_HOME을 만들어 줍니다. 변수 값은 JDK가 설치된 파일 경로를 넣어주면 됩니다.



2-6.시스템 변수에서 path를 찾아 편집을 누릅니다.



2-7. ;%JAVA_HOME%\bin;  <<<을 제일 뒷부분에 추가합니다. ;<<<빼먹지 마세요!!! 



2-8. 아래와 같이 CLASSPATH 변수를 추가합니다.



2-9.변수 설정이 끝났으면 확인을 누르고 cmd 창을 켜서 'java', 'javac', 'java -version' 명령어를 실행해 설치 및 환경변수 설정이 되었는지 확인합니다.



3.eclipse 설치

3-1.이클립스 사이트로 접속하여 아래 다운로드 버튼을 누릅니다.

-http://www.eclipse.org/


3-2.이클립스 Download Packages 버튼을 누릅니다.



3-3.컴퓨터 사양에 맞는 버전을 누릅니다. 



3-4.아래 다운로드 버튼을 클릭하시면 다운로드가 됩니다.
다운된 이클립스는 설치없이 압출을 풀면 바로 사용가능합니다.


 

'IT > JAVA' 카테고리의 다른 글

JAVA 설치, 환경변수 설정(Window11)  (0) 2024.03.08

-CPU스케줄링은 다중 프로그램 운영체제의 기본이다

-이 포스팅에서 일반적인 스케줄링 개념을 논의하는 경우에는 프로세스 스케줄링이라하고 스레드에 국한될 경우 스레드 스케줄링이라는 용어를 사용한다


1.개요(Overview)

-다중 프로그래밍에 대한 기본 개념은 어떤 프로세스가 대기해야 할 경우, 운영체제는 CPU를 그 프로세스로부터 회수해 다른 프로세스에 할당한다

 

1-1.CPU-입출력 버스트 사이클(CPU-I/O Burst Cycle)

-프로세스 실행은 CPU실행과 입출력 대기의 사이클로 구성된다. 프로세스 실행은 CPU 버스트로 시작된다. 뒤이어 입출력 버스트가 발생하고, 왔다 갔다 한다. 결국 마지막 CPU버스트는 실행을 종료하기 위한 시스템 요청과 함께 끝난다


1-2.CPU스케줄러(CPU Scheduler)

-CPU가 유휴 상태가 될 때마다 운영체제는 준비완료 큐에 있는 프로세스들 중에서 실행될 프로세스를 선택한다

-이 선택은 단기 스케줄러가 한다. 큐에 있는 레코드들은 일반적으로 프로세스 제어 블록이다


1-3.선점 스케줄링(Preemptive Scheduling)

-CPU스케줄링은 다음의 네가지 상황하에서 발생할 수 있다

a.한 프로세스가 실행 상태에서 대기 상태로 전환될 때 

b.프로세스가 실행 상태에서 준비완료 상태로 전환될 때 

c.프로세스가 대기 상태에서 준비완료 상태로 전환될 때 

d.프로세스가 종료할 때 

-상황 ad의 경우 스케줄링 측면에서 선택의 여지가 없다. 새로운 프로세스가 반드시 선택되어야 한다

그러나 b, c의 경우 선택의 여지가 있다

-상황 ad에서만 스케줄링이 발생할 경우, 이러한 스케줄링 방법을 비선점(non-Preemptive)이라하고 그렇지 않으면 선점(Preemptive)라고 한다

-즉 비선점에서는 CPU에 한 프로세스가 할당되면 프로세스가 종료 또는 대기상태로될 때 까지 CPU를 점유한다

-선점 스케줄링을 사용할 경우 공유 자료를 접근하는 경우 비용이 발생한다

-공유 자원을 조정할 새로운 메커니즘이 필요하다

-선점은 또한 운영체제 커널 설계에도 영향을 준다


1-4.디스패처(dispatcher)

-CPU스케줄링 기능에 포함된 또 하나의 요소는 디스패처이다

-디스패처는 CPU의 제어를 단기 스케줄러가 선택한 프로세스에게 주는 모듈이며 다음과 같은 작업을 포함한다

a.문맥을 교환하는일

b.사용자 모드로 전환 하는 일

c.프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동(Jump)하는 일

-디스패처가 하나의 프로세스를 중단시키고 다른 프로세스를 실행하는데 소요되는 시간을 디스패치 지연이라 한다


2.CPU스케줄링 기준(Scheduling Criteria)


2-1.CPU 알고리즘 선택시 사용되는 기준

-CPU 이용률(Utilization)

-처리량(throughput)

-총처리 시간(turnaround time)

-대기 시간(waiting time)

-응답시간(response time)


3.스케줄링 알고리즘(Scheduling Algorithm)


3-1.선입 선처리 스케줄링(First-Come, First-Served Scheduling)

-CPU를 머저 요청하는 프로세스가 CPU를 먼저 할당받는다.

-ex)

프로세스    버스트시간    대기시간

   p1             24               0                평균대기시간 (0+24+27) / 3 = 17

   p2              3               24        

p3              3                3    

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.209


3-2.최단 작업 우선 스케줄링(Shortest-Job-First Scheduling/ SJF)

-이 알고리즘은 각 프로세스에 다음 CPU 버스트 길이를 연관 시킨다. CPU가 이용가능해지면 다음 CPU 버스트가 가장 작은 프로세스에게 할당된다

-두 프로세스의 다음 CPU 버스트가 같다면 순위를 정하기 위해 선입선처리 스케줄링을 적용한다

-ex)

프로세스    버스트시간    대기시간

   p1               6                3                평균대기시간 (3+16+9+0) / 4 = 7

   p2               8               16        

p3               7                9    

p4               3                0       

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.209


-SJF알고리즘은 최소의 평균 대기 시간을 가진다. 

-그러나 실제 어려움은 다음 CPU 요청 길이를 파악하는 것이다. 

-SJF알고리즘은 장기 스케줄링에서 자주 사용된다. 

-SJF는 선점형이거나 비선점일 수 있다. 이전 프로세스가 실행되는 동안 새로운 프로세스가 준비완료 큐에 도착하면 선택 상황이 발생한다. 새로운 프로세스가 현재 실행되고 있는 프로세스의 남은 시간보다 더 짧은  CPU버스트를 가실 수도 있다. 

-비선점형 SJF는 형재 실행하고 있는 프로세스가 자신의 CPU끝내도록 허용한다. 

-선점형 SJF는 현재 실행하는 프로세스를 선점 할 것이다. 

-선점형 SJF EX)

프로세스    도착시간   버스트시간    대기시간

   p1              0              6            (10-1)               평균대기시간 (9+0+15+2) / 4 = 6.5

   p2              1              8            (1-1)       

   p3              2              7            (17-2)    

   p4              3              3            (5-3)

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.213

    

3-3.우선순위 스케줄링(Priority Scheduling)

-우선순위가 각 프로세스들에게 연관되어 있으며 CPU는 가장 높은 우선순위를 가진 프로세스에게 할당된다. 

-SJF는 우선순위가 다음 CPU버스트의 반대인 단순한 우선순위 알고리즘이다. 

-여기서 우선순위가 낮은 숫자가 높은 우선순위를 나타낸다 가정한다. 

-EX) 프로세스들은 시간 0에 p1,p2...p5순서로 도착

프로세스    버스트시간   우선시간    대기시간

   p1              10              3              6               평균대기시간 (6+0+16+18+1) / 5 = 8.2

   p2               1              1               0       

p3               2              4              16    

p4               1              5              18        

    p5               5              2               1   

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.214

    

-우선순위는 내부적 or 외부적으로 정해질 수 있다. 

-내부적으로는 시간제한, 메모리 요구, 열린 파일의 수, 평균 CPU에 대한 비율등이 사용

-외부적으로는 프로세스의 중요성, 지불되는 비용의 타입과 양, 작업을 원하는 부서등에서 기준으로 사용

-우선순위 알고리즘 또한 선점형 비선점형으로 나뉜다. 

-비선점형 우선순위 스케줄링 알고리즘은 단순히 준비완료 큐의 머리 부분에 새로운 프로세스를 넣는다. 

-우선순위 스케줄링의 주요문제는 무기한 봉쇄(indefinite Blocking)또는 기아상태(Starvation)이다. 

-이는 낮은 프로세스들이 CPU를 무기한 대기하는 경우가 발생한다. 

-이를 해결하는 방법은 노화(aging)이다. 노화는 오래 기다린 시스템의 우선순위를 올리는 방법이다. 


3-4.라운드 로빈 스케줄링(Round-Robin Scgeduling)

-라운드 로빈 스케줄링 알로리즘은 특별히 시분할 시스템을 위해 설계

-시간 할당량(time quantom)또는 시간 조각(time slice)이라고 하는 작은 단위의 시간을 정의한다. 

-준비완료 큐는 원형 큐로 동작한다. CPU스케줄러는 준비완료 큐를 돌면서 하번에 하 프로세스에게 한번의 시간 할당량 이후에 인터럽트를 타이머를 설정한 후, 프로세스를 디스패치(dispatch)한다. 

-이러면 두 가지 상황이 발생한다. 

a.프로세스의 CPU 버스트가 한 번의 시간 할당량보다 작을 수 있다. -> 다음 프로세스 진행

b.현재 실행중인 프로세스의 CPU버스트가 한 번의 시간 할당량보다 긴 경우 -> 타이머가 만료되면 O/S가 인터럽트 발생 -> 문맥 교환 발생 -> 다음 프로세스 선택

-EX)

프로세스    버스트시간    대기시간

   p1             24               6                평균대기시간 (6+4+7) / 3 = 5.66

   p2              3                4        

p3              3                7   

시간 할당량 = 4밀리초

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.216


-라운드 로빈 알고리즘의 성능은 시간 할당량의 크기에 매우 많은 영향을 받는다. 

-시간 할당량이 문맥교환 시간에 비해 커야할지라도 시간 할당량이 너무 커서는 안된다. 


 

3-5.다단계 큐 스케줄링(Multilevel Queue Scheduling)

-프로세스들이 쉽게 상이한 그룹으로 분류될 수 있는 상황을 위해 만들었다. 

-다단계 큐 스케줄링 알고리즘은 준비 완료 큐를 다수의 별도의 큐로 분류한다. 

-각 프로세스를 위해 다른 종류의 큐 사용 가능하다. 

-큐와 큐 사이의 스케줄링도 필요하다. 

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.219


3-6.다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling)

-다단계 큐의 경우 큐 사이의 이동을 허용하지 않는다 .이러한 방식은 스케줄링 오버헤드는 적지만 융통성이 없다. 

-다단계 피드백 큐의 경우 프로세스가 큐 사이를 이동하는 것을 허용한다. 

-다단계 피드백 큐의 경우 다음의 매개변수에 의해 정의된다. 

a.큐의 개수

b.각 큐를 위한 스케줄링 알고리즘

c.한 프로세스를 높은 우선순위로 올려주는 시기를 결정하는 방법

d.한 프로세스를 낮은 우선 순위 큐로 강등 시키는 시기를 결정하는 방법

e.프로세스가 서비스를 필요로 할 때 프로세스가 들어갈 큐를 결정하는 방법

-이 알고리즘은 특정 시스템에 부합하도록 구성 가능하다. 하지만 가장 복잡한 알고리즘이기도 하다. 


4.스레드 스케줄링(Threads Scheduling)

-스레드를 사용자 수준과 커널 수준으로 구분하였다. 운영체제에서 스케줄되는 대상은 커널 수준 스레드이다. 

-사용자 스레드는 스레드 라이브러리에 의해 관리된다.

-궁극적으로 사용자수준 스레드는 커널스레드에 사상되어야한다. 


4-1.경쟁 범위(Contantion Scope)

-프로세스-경쟁-범위(Process-Contention-Scope,PCS)동일한 프로세스에 속한 스레드 사이에서 CPU경쟁

-시스템-경쟁-범위(System-Contention-Scope,SCS) SCS의 CPU에 대한 경쟁은 시스템 상의 모든 스레드들 사이에서 일어난다. 


5.다중처리기 스케줄링(Multiple-Processor-Scheduling)

-지금까지는 단일처리기를 가진 시스템에서 CPU를 스케줄하는 문제를 다뤘다. 

-만일 여러개의 CPU를 사용 가능하면 부하 공유가 가능해진다.


5-1.다중처리기 스케줄링에 대하 접근방법(Approaches to Multiple Processor Scgeduling)

-다중처리기 시스템의 CPU스케줄링에 관한 한가지 해결 방법은 주 서버(Master Server)라는 하나의 처리기가 모든 스케줄링 결정과 입출력 처리 그리고 다른 시스템의 활동을 처리하게 하는 것이다. 이러한 방법은 비대칭 다중처리(Asymetric multiprocessing)이다. 

-두 번째는 대칭 다중처리(Symmetric multiprocessing,SMP)를 사용하는 것으로 각 처리기가 독립적으로 수행하는 것이다. 여러 처리기가 공동 자료 구조를 접근하려 한다면 신중한 스케줄링이 필요하다.  


5-2.처리기 친화성(Processor Affinity)

-프로세스를 다른 처리기로 이동하면 각 처리기의 캐시 메모리 내용 또한 이주하여야 하기 때문에 비용이 많이 든다.

-그래서 대부분의 SMP 시스템은 한 처리기에서 다른 처리기로 이주를 피하고 한 처리기에서 같은 프로세스를 실행하려한다. 

-이 현상을 처리기 친화성이라 한다.  


5-3.부하 균등화(Load Balancing)

-SMP에서 처리기가 하나 이상인 것을 최대한 활용하려면 부하를 모든 처리기에게 균등하게 처리하는 것이 매우 중요하다. 

-부하 균등화는 SMP시스템의 모든 처리기 사이에 부하가 고르게 배분되도록 시도된다. 

-push 이주(migration)과 pull 이주 방식으로 접근한다. 


5-4.다중 코어 프로세서(Multicore Processors)

-요즘엔 하나의 물리적인 칩안에 여러개의 처리기 코어를 장착하는 것이다. 이러한 구조를 다중 코어 프로세서라 한다. 

-프로세서가 메모리를 접근할 때 많은 시간을 허비한다는 것을 발견하였다. 

-메모리 멈춤(Memory Stall)이라 알려진 이러한 상황은 캐시 미스등의 여러 원인으로 발생한다. 

-밑의 그림은 단일 코어를 사용할 때 메모리 멈춤으로 50%이상 시간을 허비하는 시나리오를 표현하고 있다. 

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.227

-이 상황을 타개하기 위해서 다중 코어 시스템을 구현한다. 이 구조에서는 한 스레드가 메모리를 기다리면서 멈추면 코어는 다른 스레드로 전환될 수 있다. 

-다음 그림은 스레드0과 스레드1이 번갈아가며 실행되는 이중 스레드 프로세서 코어를 보여준다. 

-O/S의 관점에선 각 H/W스레드는 S/W스레드를 실행할 수 있는 논리 프로세서로 보인다. 

-따라서 이중 스레드 이중 코어 시스템에서는 4개의 논리 프로세서가 O/S에 제공된다. 

-일반적으로 처리기를 다중 스레드화하는 데에는 크게-나눔(Coarse-Grained)다중 스레딩과 잘게-나눔(Fine-Grained)다중 스레딩의 2가지 방법이 있다. 


5-5.가상화와 스케줄링(Virtualization ans Scheduling)

-하나의 CPU를 가졌더라도 가상화를 지원하는 시스템은 종종 다중 처리기 시스템처럼 동작한다. 

-가상화 기술에는 많은 변형이 존재하여 오히려 악영향을 미칠 수 도 있다. 

-가상화가 스케줄에 미치는 영향을 요약하는 것은 매우 어렵다. 

 

'IT > 운영체제' 카테고리의 다른 글

스레드(다중 스레드 프로그래밍)  (0) 2016.11.29
프로세스(process)  (0) 2016.11.24
운영체제(operating system)이란?  (0) 2016.11.23
운영체제 포스팅에 앞서...  (0) 2016.11.23

1.개요(Overview)

-응용체제는 다중 프로세스를 포함하는 특성을 제공한다. 

-스레드는 CPU 이용의 기본 단위이다.

-스레드는 스레드 ID, 프로그램  카운터, 레지스터 집합, 그리고 스택으로 구성된다.

-스레드는 같은 프로세스에 속한 다른 스레드와 운영체제 자원들을 공유한다. 

-밑의 그림은 단일 스레드 프로세스와 다중 스레드 프로세스의 차이점을 보여주고 있다.

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.170



1-1.동기(Motivation)

-스레드가 대중화되기 전에는 요청마다 별개의 프로세스를 생성하는 것이 보편적이었다. 예를 들어, 웹 서버에 여러 클라이언트가 서비스 요청을 하면 서버는 그 요청을 실행할 프로세스를 생성했다. 하지만 프로세스 생성 작업은 매우 많은 시간을 소비하고 많은 자원을 필요로 한다. 하지만 새 프로세스가 할 일이 기존 프로세스가 하는 일과 동일하다면 프로세스 안에 여러 스레드를 만들어 나가는 것이 더 효율적이다. 


1-2.장점(Benefits)

a.응답성(responsiveness): 사용자에 대한 응답성을 증가시킨다. 

b.자원 공유(resource sharing): 프로세스는 공유 메모리 또는 메시지 전달 기법을 통해서만 자원을 공유할 수 있다. 그러나 스레드는 자동적으로 그들이 속한 프로세스의 자원들과 메모리를 공유한다. 

c.경제성(economy): 프로세스보다 메로리와 자워 할당하는 비용이 적다. 

d.규모 가변성(scalability): 다중 처리기 구조에서 각각의 스레드가 다른 처리기에서 병렬로 처리 가능


1-3.다중코어 프로그래밍

-다중코어 시스템에서 프로그래밍 시 생각해야 할 이슈

a.작업 나누기 b.균형 c.데이터 분석 d.데이터 종속성 e.시험 및 디버깅


2.다중 스레드 모델(Multithreading Models)

-스레드는 사용자 수준에서 제공되는 사용자 스레드와 커널 수준에서 제공되는 커널 스레드가 있다. 

이 두 스레드는 일반적으로 3가지 방법으로 제공된다. 


2-1.다대일 모델(Many-to-One Model)

-효율적이긴 하지만 한 스레드가 봉쇄형 시스템 호출을 할 경우 전체 프로세스가 봉쇄된다.

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.174


2-2.일-대-일 모델(One-to-One Model)

-다대일 모델보다 더 많은 병렬성을 제공한다. 

-단점은 사용자 수준 스레드 생성시 그에 따른 커널 스레드를 생성해야 한다는 점이다.

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.174


2-3.다-대-다 모델(Many-to-Many Model)

-다대일 모델은 한번에 하나의 스레드만이 커널에 의해 스케줄되기 때문에 진정한 동시성을 획득할 수 없다. 

-일대일 모델은 개발자가 한 응용내에 너무 많은 스레드를 생성하지 않도록 주의해야한다. 

-다대다 모델은 위의 2가지 문제점을 어느 정도 해결했다. 

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.175



3.스레드 라이브러리(Threads Library)

-스레드 라이브러리는 프로그래머에게 스레드를 생성하고 관리하기 위한 API를 제공한다. 

-스레드 라이브러리를 구현하는 데에는 주된 두 가지 방법이 있다. 

a.커널의 지원 없이 완전히 사용자 공간에서만 라이브러리를 제공

b.운영체제에 의해 지원되는 커널 수준 라이브러리를 구현하는 것이다. 

-현재 a.POSIX Pthreads b.win32 c.JAVA의 세종류 라이브러리가 주로 사용된다. 이 중에서 JAVA 스레드 라이브러리를 이용한 기본적인 스레드 생성에 대한 내용만 정리해 보았다. 


3-1.JAVA(JAVA Threads)

-스레드는 JAVA 프로그램의 프로그램 실행의 근본적인 모델이고 JAVA 언어와 API는 스레드의 생성과 관리를 지원하는 풍부한 특성을 제공한다. 모든 JAVA 프로그램은 적어도 하나의 단일 제어 스레드를 포함하고 있다. 

-JAVA프로그램에서 스레드를 생성하는 기법에는 두 가지가 있다. 

a.Thread 클래스로부터 파생된 새로운 클래스를 생성하고 Thread 클래스의 run()메서드를 무효화(Override)하는 것이다. 

b.Runnable 인터페이스를 구현하는 클래스를 정의하는 것이다. 

Runnable 인터페이스는 다음과 같이 구현한다. 

public interface Runnable

{    

public abstract void run();

}

run() 메서드를 구현하면 별도의 스레드로서 실행된다.

-Thread 객체를 생성하는 것은 구체적으로 말하면 새로운 스레드를 생성하는 것은 아니다. 오히려, 새로운 스레드를 실제로 생성하는 것은 start()메서드이다. start메서드를 호출하면 다음과 같은 두가지 작업을 실행한다. 

a.메모리가 할당되고, JVM 내에 새로운 스레드가 초기화된다. 

b.run() 메서드를 호출하면 스레드가 JVM에 의해 실행대로 자격을 갖게 된다. (단, 절대 run()을 직접 호출하면 안된다. start()를 호출하면 start()가 run()을 대신 호출할 것이다.)

-Win32와 Pthreads에서는 공유 데이터가 단순히 전역 변수로 선언되기 때문에 스레드 간의 데이터 공유를 쉽게 할 수 있다. 그러나 JAVA는 객체 지향 언어이기 때문에 전역 변수의 개념을 제공하지 않는다. JAvA에서 스레드간 데이터 공유를 할려면 공유 객체에 대한 참조를 전달해야 한다. 

-부모 스레드가 더 이상 진행하기 전에 자식 스레드가 끝나기를 기다리기 위해 join()메서드를 사용한다. 


4.스레드와 관련된 문제들(Threading Issues)

-다중 스레드 프로그램에서 고려해야 할 몇몇 문제들을 논의한다. 


4-1.Fork() 및 Exec() 시스템 호출

-한 프로그램의 스레드가 fork()를 호출하면 새로운 프로세스는 모든 스레드를 복제해야 하는지 아니면 한 개의 스레드만 복제해야 하는지로 나뉜다. 

-exec()를 호출하면 exec()의 매개변수로 지정된 모든 스레드를 포함한 전체 프로세스를 대체시킨다. 

-즉, fork() 후 바로 exec()를 부른다면 exec()의 매개변수로 지정한 프로그램이 모든 것을 대체 할 것이기 때문에 호출한 스레드만 복사해주는 fork()가 적절하다. 그러나 fork() 후 exec() 하지 않으면 모든 스레드를 복제해야 한다. 


4-2.취소(Cancellation)

-스레드 취소는 스레드가 끝나기 전에 그것을 강제로 종료시키는 작업을 말한다. 

-취소하려는 or 취소되어야 하는 스레드를 목적 스레드(target thread)라고 부른다. 

-목적 스레드의 취소 방법은 두 가지 방식이 있다. 
    a.비동기식 취소(asynchronous Cancellation): 한 스레드가 목적 스레드를 즉시 강제종료

    b.지연 취소(deferred Cancellation): 목적 스레드가 주기적으로 자신이 강제종료 해야하는지를 검사한다. 

-스레드 취소는 할당된 자원들 때문에 신중해야한다. 


4-3.신호처리(Signal Handling)

-신호는 UNIX에서 프로세스에게 어떤 사건이 일어났음을 알려주기 위해 사용된다. 

-신호는 다음과 같은 형태로 전달된다. 

a.신호는 특정 사건이 일어나야 생성된다. 

b.신호가 생성되면 프로세스에게 전달된다.

c.신호가 전달되면 반드시 처리되어야 한다. 

-모든 신호는 둘 중 하나의 처리기에 의해 처리된다. 

a.디폴트 신호 처리기

b.사용자 정의 신호 처리기

-다중 스레드 프로그램에서 어느 스레드에게 신호를 전달하는가는 다음과 같은 선택이 존재한다. 

a.신호가 적용될 스레드에게 전달한다. 

b.모든 스레드에게 전달한다. 

c.몇몇 스레드들에게만 선택적으로 전달한다. 

d.특정 스레드가 모든 신호를 받도록 지정한다. 


4-4.스레드 풀(Thread pools)

-다중 스레드 서버의 문제점은 다음과 같다. 

a.서비스마다 스레드 생성에 소요되는 시간이 있다. 

b.동시에 가능한 최대 스레드 수의 한계를 정해야 한다. 

-이러한 문제 해결을 해주는 방법의 하나로 스레드 풀을 꼽을 수 있다.
-스레드 풀의 기본 골조는 일정한 수의 스레드를 만들어 두고 요청이 오면 할당하고 끝나면 반환하고 모자르면 기다리는 것이다. 

-스레드 풀의 장점

a.새 스레드를 만들기보다 기존 스레드로 서비스해 주는 것이 더 빠르다.

b.스레드 풀은 임의 시각에 존재할 스레드 개수에 제한을 둔다. 이러한 제한은 많은 수의 스레드를 병렬 처리할 수 없는 시스템에 도움이 된다. 


4-5.스레드별 데이터(Thred-Specific Data)

-한 프로세스에 속한 스레드들은 그 프로세스의 데이터를 모두 공유한다. 그러나 상황에 따라 각 스레드가 자신만 사용가능한 데이터를 가져야 할 필요도 있다. 그러한 데이터를 스레드별 데이터라 부른다. 


4-6.스케줄러 액티베이션(Scheduler Activations)

-스레드 라이브러리와 커널의 통신도 고려해야할 문제이다. 

-사용자 스레드 라이브러리와 커널 스레드 간의 통신 방법 중 하나는 스케줄러 액티베이션이란 방법이다.  

'IT > 운영체제' 카테고리의 다른 글

CPU스케줄링  (0) 2016.12.20
프로세스(process)  (0) 2016.11.24
운영체제(operating system)이란?  (0) 2016.11.23
운영체제 포스팅에 앞서...  (0) 2016.11.23

1.프로세스 개념(Process Concept)

- 실행중인 프로그램, 실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 된다.      


1-1.프로세스 상태

- 새로운(new), 실행(running), 대기(waiting), 준비완료(ready), 종료(terminated)


Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.114


1-2.프로세스 제어 블록(PCB, Process Control Block)

- 특정 프로세스와 연관된 여러 정보를 수록한다. 

- 프로세스 상태, 프로그램 카운터(다음에 실행할 명령어의 주소)CPU 레지스터, CPU-스케줄링 정보, 메모리 관리 정보, 회계 정보, 입출력 상태 정보


1-3.스레드(Threads)

- CPU 이용의 기본 단위이다. 

- 스레드를 지원하는 시스템에서는 PCB에 각 스레드에 관한 정보를 포함하도록 확장한다. 

- 자세한 내용은 추후 포스팅 예정


2.프로세스 스케줄링(Process Scheduling)

- 다중 프로그래밍의 목적은 CPU 이용을 최대화하기 위하여 항상 어떤 프로세스가 실행중이도록 하는데 있다. 


2-1.스케줄링 큐

- 프로세스가 시스템에 들어오면 잡큐에 놓여진다. 

- 연결 리스트 형식이다. 

- 준비완료 상태에서 실행을 대기하는 프로세스들은 준비완료 큐(read Queue)라 불리는 리스트상에 유지된다. 

- read Queue의 헤더엔 리스트의 첫 번째와 마지막 PCB를 가리키는 포인터를 포함한다. 

- 특정 입출력 장치를 대기하는 프로세스들의 리스트를 장치 큐(device Queue)라고 한다. 

- 각 장치는 장치 큐를 가진다. 

- 프로세스에 CPU가 할당되어 실행되면 다음 중 하나가 발생할 수 있다.  

a.프로세스가 입출력을 요청하여 입출력 큐에 넣어질 수 있다. 

b.프로세스가 새로운 서브 프로세스를 생성하고 그 프로세스의 종료를 기다릴 수 있다.

c.프로세스가 인터럽트의 결과에 따라 강제로 CPU로부터 제거되어 준비완료 큐에 다시 놓일 수 있다. 


2-2.스케줄러

- 장기 스케줄러(잡 스케줄러) = 실행 준비가 완료되어 있는 프로세스들을 선택하여 실행하기 위해 메모리로 적재한다. 

- 단기 스케줄러(CPU 스케줄러) = 실행 준비가 완료되어 잇는 프로세스들 중에서 선택하며 이들 중 하나에게 CPU를 할당한다. 

- UNIX와  Micro Windows 같은 시분할 시스템들은 장기 스케줄러가 없으면 모든 새로운 프로세스를 단기 스케줄러를 위하여 단순히 메로리에 넣는다. 이들 시스템들의 ㅇ나정성은 물리적인 제한이나 사용자들의 자체 조정 본능에 의존한다. 

- 시분할 시스템과 같은 일부 운영체제들은 추가로 중기 스케줄링(medium-term sechdular)을 도입한다. 

 

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.120

- 중기 스케줄러의 핵심 아이디어는 메모리에서 프로세스들을 제거하여, 즉 CPU를 위한 경쟁에서 제거하여 다중 프로그래밍의 정도를 완화하는 것이 바람직할 때도 있다는 것이다. 이러한 기법을 스와핑(swaping)이라고 한다. 

2-3.문맥 교환(Context Switch)

- CPU를 다른 프로세스로 교환하려면 현재 프로세스의 상태를 저장하고 다른 프로세스의 저장된 상태를 복구하는 작업이 필요, 이 작업을 Context Switch라고 한다. 

- Context Switch가 발생하는 시간 동안 시스템은 아무일을 못하기에 순수한 오버헤드이다. 


3.프로세스에 대한 연산(Operation on Processes)

- 대부분의 시스템 내의 프로세스들은 병행 실행될 수 있으며, 반드시 동적으로 생성되고, 제거될 수 있다. 


3-1.프로세스 생성

- 생성하는 프로세스를 부모 프로세스, 새로운 프로세스를 자식 프로세스라고 부른다. 

- 트리의 형태이다. 

- 대부분의 운영체제는 프로세스 식별자(PID)로 구분한다.

- 서브 프로세스는 O/S로 직접 자원을 얻거나 부모 프로세스 자원의 부분 집합을 사용하도록 강요받을 수 있다. 

- 부모 프로세스는 자원을 분할하여 자식들에게 나누어 주거나 일부 자원을 공유할 수도 있다. 

- 프로세스가 생성될 때 초기화 자료(입력된)가 부모 프로세스에서 자식 프로세스로 전달 될 수 있다. 

- 프로세스 생성시 실행과 관련하여 두 가지 가능성이 있다. 

a.부모가 자식과 병렬로 실행된다. 

b.부모가 모든 자식 또는 일부 자식이 끝날때까지 기다린다. 

- 새로운 프로세스들의 주소 공간 측면에서 볼때 다음과 같은 두 가지 가능성이 있다. 

a.자식 프로세스는 부모 프로세스의 복사본이다.

b.자식 프로세스가 자신에게 적재될 새로운 프로그램을 갖고있다.

- 새로운 프로세스는 원래 프로세스의 주소 공간의 복사본으로 구성된다. 두 프로세스(부모와 자식)의 한가지 다른 점은 fork()의 반환 코드가 서로 다르다는 것이다. (자식 프로세스를 위한 PID의 값은 0이고, 부모 프로세스의 PID값은 0보다 큰 정수 값이라는 것이다. 

- fork()후 두 process중 하나를 자신의 메모리 공간을 새로운 프로그램으로 바꾸기 위하여 exec()을 호출한다. 

- exec()시스템 호출은 이진 파일을 메모리로 적재하고 실행한다. 

- 부모는 wait()시스템 호출로 자식 프로세스가 끝나길 기다린다. 자식은 암시적이거나 명시적으로 exit()를 사용


Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.125


3-2.프로세스 종료

- exit()이 호출된 시점에서 부모 프로세스에게 상태값을 반환하고 자원은 O/S에 반납한다. 

- 또 다른 방법으로도 프로세스가 종료될 수 있다. 그 방법은 다른 프로세스가 임의로 종료시킬 수 있다. (보통은 부모만 가능)

- 부모는 다음과 같은 이유로 자식들을 종료한다.

a.자식이 할당된 자원을 초과할때

b.자식에게 할당된 태스크가 더 이상 필요 없을때

c.부모가 exit하는데, 운영체제는 부모가 exit한 후 자식의 실행을 계속하는 것을 허용하지 않는 경


4.프로세스간 통신(Interprocess Communication)

- 협력 프로세스간 데이터 교환을 위한 프로세스간 통신 기법을 필요로 한다. 

- 프로세스간 통신은 기본적으로 공유 메모리, 메시지 전달 두 가지 모델이 있다.

- 공유 메모리 모델은 최대 속도와 편이를 제공한다. 

- 메시지 전달 모델은 충돌을 회피할 필요가 없기 때문에 적은양의 데이터를 교환하는데 유용한다. 


5.클라이언트 서버 환경에서 통신(Communication in Client-Server System)

- 공유 메모리와 메시지 전달 기법은 클라이언트-서버 시스템의 통신에도 사용할 수 있다. 

- 추가적인 통신 전략으로 소켓, 원격 프로시저 호출(RPCs), 파이프가 있다. 


'IT > 운영체제' 카테고리의 다른 글

CPU스케줄링  (0) 2016.12.20
스레드(다중 스레드 프로그래밍)  (0) 2016.11.29
운영체제(operating system)이란?  (0) 2016.11.23
운영체제 포스팅에 앞서...  (0) 2016.11.23

운영체제(operating system)이란 컴퓨터 하드웨어를 관리하는 프로그램이라 할 수 있습니다. 

컴퓨터 시스템은 대개 하드웨어, 운영체제, 응용 프로그램 및 사용자로 구분할 수 있습니다. 

Abraham Silberschatz , Peter B. Galvin, Greg Gagne Operating System Concepts 지음 | 조유근, 고건, 김영찬, 박민규 옮김 | 홍릉과학출판사 | 2013년 02월 15일 출간, p.4

 

위 사진에서 보이는 것처럼 운영체제는 하드웨어와 사용자 사이의 중재자 역할을 합니다. 

컴퓨터 시스템들이 사용자 프로그램을 실행하고 문제점들을 해결하기 편하게 하기 위하여 다양한 응용 프로그램들이 개발되었고 이것들을 하나의 소프트웨어로 통합한 것이 운영체제의 탄생 배경이라 합니다. 


운영체제의 역할

 - 응용 프로그램을 위한 기반 제공

 - 사용자와 하드웨어 사이의 중재자

 - 하드웨어 관리




'IT > 운영체제' 카테고리의 다른 글

CPU스케줄링  (0) 2016.12.20
스레드(다중 스레드 프로그래밍)  (0) 2016.11.29
프로세스(process)  (0) 2016.11.24
운영체제 포스팅에 앞서...  (0) 2016.11.23

운영체제공부를 하면서 공부한 내용을 정리하는 방향으로 포스팅할 계획입니다. 
운영체제 폴더에 포스팅되는 내용과 사진의 출처는 모두 책입니다. 
책은 밑에 사진에 나온 책입니다. 

모자르는 내용은 이 책을 참고하시면 될 꺼 같습니다. 
혹시 보시다 잘못된 이해와 포스팅 내용은 지적해 주시면 수정하도록 하겠습니다. 

'IT > 운영체제' 카테고리의 다른 글

CPU스케줄링  (0) 2016.12.20
스레드(다중 스레드 프로그래밍)  (0) 2016.11.29
프로세스(process)  (0) 2016.11.24
운영체제(operating system)이란?  (0) 2016.11.23

+ Recent posts