인덱스 칼럼 순서에 따른 탐색 시간 비교해보기

 

0. 테이블생성

 

1. 정렬하기

1) ORDER BY EmployeeID, OrderDate;

EmployeeID로 정렬된 뒤에 OrderDate 순으로 정렬되어있다.

2) ORDER BY OrderDate, EmployeeID;

OrderDate , EmployeeID 순으로 정렬되어 있는 것을 알 수 있다.

 

2. 특정 조건으로 찾기

SELECT *
FROM TestOrders WITH(INDEX(idx_emp_ord))
WHERE EmployeeID = 1 AND OrderDate = CONVERT(DATETIME, '19970101');

SELECT *
FROM TestOrders WITH(INDEX(idx_ord_emp))
WHERE EmployeeID = 1 AND OrderDate = CONVERT(DATETIME, '19970101');

인덱스 조건이 다른 두 개 코드는 탐색 결과가 차이가 없는 걸 알 수 있다.

3. 범위 조건으로 찾기

범위가 늘어나면 점점 큰 차이가 나게 된다. idx_emp_ord로 정렬한 뒤에 OrderDate범위는 바로 접근할 수 있는 반면에 idx_ord_emp로 정렬된 두 번째는 OrderDate를 범위를 찾은 다음에 다시 EmployeeID를 찾아야 하기에 더 오랜 시간이 걸리게 된다.

 

=> Index(a,b,c)로 구성되었을때, 선행 between사용하면 후행은 인덱스 기능을 살싱하게 된다.

반응형

'STUDY > 데이터베이스' 카테고리의 다른 글

[SQL] 연습 Clustered / NonClustered  (0) 2022.07.16
[SQL] 연습 복합인덱스 #4  (0) 2022.07.12
[SQL] 연습 DATABASE 작성 #3  (0) 2022.06.30
[SQL] 연습 ORDERBY #2  (2) 2022.05.17
[SQL] 연습 SELECT,WHERE #1  (0) 2022.05.10

1. NonClustered 인덱스 추가

특징 : Clustered Index가 없으면 데이터는 Heap Table이라는 곳에서 저장하고 Heap RID를 통해 Heap Table에 접근해서 데이터를 추출한다.

2. Clustered 인덱스 추가

HEAP RID가 없어졌으며 UNIQUEFIRE(같은 OrderID를 식별도록)가 생성됐다.

특징: HeapTable이 없으며, Leaf Table에 실제 데이터가 있고, Clustered Index의 실제 키값을 가지고 있다.

반응형

'STUDY > 데이터베이스' 카테고리의 다른 글

[SQL] 인덱스 컬럼 순서  (0) 2022.07.20
[SQL] 연습 복합인덱스 #4  (0) 2022.07.12
[SQL] 연습 DATABASE 작성 #3  (0) 2022.06.30
[SQL] 연습 ORDERBY #2  (2) 2022.05.17
[SQL] 연습 SELECT,WHERE #1  (0) 2022.05.10

테이블 복사하기

 

복합 인덱스 추가하기

 

추가된 인덱스 정보 보기

인덱스 적용 1

인덱스 적용2

인덱스 적용3

 

인덱스 적용4

 

결과가 1~3번까지와(Index Seek) 4번이 다른 이유는 인덱스 OrderId, ProductId 생성한 순서에 영향이있다.

위그림처럼 첫번째로 만들어준 OrderId로 탐색하고 그 뒤에 ProductID로 탐색하게된다. (정렬된 OrderID와 다른 ProductID)

 

=> 결과 : 인덱스(a,b)사용중이라면 인덱스(a)는 없어도 되지만 (b)로도 검색이 필요한 경우는 (b)도 별도로 인덱스에 추가해 줘야한다.

 

 

+) 인덱스를 가공해서 찾을 경우 인덱스덕을 못볼수 있음

가공해서 찾기
그냥 찾기

 

반응형

'STUDY > 데이터베이스' 카테고리의 다른 글

[SQL] 인덱스 컬럼 순서  (0) 2022.07.20
[SQL] 연습 Clustered / NonClustered  (0) 2022.07.16
[SQL] 연습 DATABASE 작성 #3  (0) 2022.06.30
[SQL] 연습 ORDERBY #2  (2) 2022.05.17
[SQL] 연습 SELECT,WHERE #1  (0) 2022.05.10

1. 데이터베이스 만들기

- UI를 통해서 만들기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- SQL구문으로만 생성

실행 후 -> refresh를 눌러준다.

 

2. 데이터베이스 만들기

Desin을 보면 생성된 테이블을 볼 수 있다.

3. 삭제 하기

해당 구문을 실행하면 테이블이 삭제된다. (경고없이 바로 삭제되니 주의)

 

4. 테이블 내용 추가하기

5. 테이블 내용 삭제하기

 

6. 테이블 내용 변경하기

7. 제약 PRIMARY KEY

 

- 테이블 생성할때 지정하기

- 구문으로 지정하기

=> 결과

결과

제약 사항이 없을때 

 

제약 사항이 있을때

PRIMARY KEY가 있는 경우는 c#딕셔너리(자세하게는 다름 이진트리, 해쉬)를 사용하는것과 비슷하고 PRIMARY KEY가 없는 경우는 List에서 찾는것과 비슷하다.

반응형

'STUDY > 데이터베이스' 카테고리의 다른 글

[SQL] 인덱스 컬럼 순서  (0) 2022.07.20
[SQL] 연습 Clustered / NonClustered  (0) 2022.07.16
[SQL] 연습 복합인덱스 #4  (0) 2022.07.12
[SQL] 연습 ORDERBY #2  (2) 2022.05.17
[SQL] 연습 SELECT,WHERE #1  (0) 2022.05.10

정렬하기

SELECT *
FROM players
WHERE birthYear IS NOT NULL
ORDER BY birthYear DESC, birthMonth DESC, birthDay DESC;

birthYear가 NULL값을 제외하고 내림차순으로 정렬한다. birthYear값이 같다면 birthMonth ,birthDay 까지 비교하여 내림차순 정렬처리한다.

 

SELECT TOP PERCENT*

데이터중 5퍼센트만 뽑아내기

 

SELECT TOP 100*

TOP 100개 뽑아내기

 

OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY;

100개행을 건너뛰고 그 다음 100개 행을 출력하기

반응형

'STUDY > 데이터베이스' 카테고리의 다른 글

[SQL] 인덱스 컬럼 순서  (0) 2022.07.20
[SQL] 연습 Clustered / NonClustered  (0) 2022.07.16
[SQL] 연습 복합인덱스 #4  (0) 2022.07.12
[SQL] 연습 DATABASE 작성 #3  (0) 2022.06.30
[SQL] 연습 SELECT,WHERE #1  (0) 2022.05.10

1.

SELECT  nameFirst, nameLast, birthYear

FROM players
WHERE birthYear = 1866

players파일에서 nameFirst, nameLast, birthYear중 birthYear가 1866인 데이터들만 추려내도록 하였다.

더보기
블록을 지정해서 실행하면 WHERE 문을 실행시키지 않음

 

2. WHERE 조건 조합하여 체크하기

 

3. 패턴 이용하기

- 'New Yor' 이후 한 글자 까지 찾기

- 'New York%'  New Yor으로 시작하는 모든 데이터 찾기

반응형

'STUDY > 데이터베이스' 카테고리의 다른 글

[SQL] 인덱스 컬럼 순서  (0) 2022.07.20
[SQL] 연습 Clustered / NonClustered  (0) 2022.07.16
[SQL] 연습 복합인덱스 #4  (0) 2022.07.12
[SQL] 연습 DATABASE 작성 #3  (0) 2022.06.30
[SQL] 연습 ORDERBY #2  (2) 2022.05.17

Cache

자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 원래의 데이터를 접근하는 시간이 오래 걸리거나 반복적으로 동일한 결과를 돌려주는 경우 데이터를 직접적인 접근으로 인한 병목현상을 막기 위해 사용되는 저장소이다. 

 


캐시 철학

 

Temporal locality

시간적으로 보면, 최근에 사용했던 기억 장소들이 집중적으로 액세스 되는 경향이 있다. 접근되었던 적이 있는 곳에는 다 시 접근할 가능성이 높다는 판단

 

Spacial locality

프로그램 실행 시 접근하는 메모리의 영역은 이미 접근이 이루어진 영역의 근처일 확률이 높다.

 

테스트 코드

            int[,] arr = new int[10000, 10000];

            {
                long now = DateTime.Now.Ticks;
                for (int i = 0; i < 10000; i++)
                {
                    for (int j = 0; j < 10000; j++)
                    {
                        arr[i, j] = 1;
                    }
                }
                long end = DateTime.Now.Ticks;
                Console.WriteLine($"(i,j) 순서 걸린 시간{end - now}");
            }

            {
                long now = DateTime.Now.Ticks;

                for (int i = 0; i < 10000; i++)
                {
                    for (int j = 0; j < 10000; j++)
                    {
                        arr[j, i] = 1;
                    }
                }
                long end = DateTime.Now.Ticks;
                Console.WriteLine($"(j,i) 순서 걸린 시간{end - now}");
            }

 테스트 결과로 봤을 때 같은 동작이지만 두 개의 결과가 많은 시간이 차이가 보이는 걸 알 수 있다. Spacial locality관점으로 근접한 공간적 메모리 영역을 접근했을 때 좀 더 짧게 수행되기 때문이다. 

 


https://talkingaboutme.tistory.com/entry/Study-Memory-Hierarchy-1

 

반응형

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

운영체제) 교착상태 (deadlock)  (0) 2019.08.16

멀티스레드

둘 이상의 스레드가 하나의 프로세스에서 동시에 작업하는 것을 의미, 하나의 프로세스 내의 여러 스레드들은 프로세스에게 할당받은 자원을 공유한다. (스택 영역은 공유 X)

 

스레드 스케줄링

스레드를 어떤 순서로 동시성을 실행할 것인지 결정하는 것, (우선순위, 순환 할당 방식이 있다.)

스레드가 많다고 좋은 건 아니다.

컴퓨터가 동시에 작업 수는 CPU의 코어 수와 같다. CPU의 코어 수보다 스레드를 많이 사용하게 되면 문맥 교환이 발생하는데 오히려 효율은 저하된다. 코어 수만큼 스레드를 실행시키는 것이 좋다.

 

 


https://tcpschool.com/java/java_thread_multi

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 유니티 네트워크 공부#1  (0) 2021.08.09
네트워크) TPC/IP 프로토콜  (0) 2019.11.17
네트워크) 네트워크 구성  (0) 2019.11.13

네트워크 프로그래밍 관련 공부를 하면서 간단히 정리해보았다. TCP

 

ServerCore(서버) /  Client(클라이언트) 두 개의 스크립트를 작성한다.

 

ServerCore

string host = Dns.GetHostName();
IPHostEntry ipHost = Dns.GetHostEntry(host);
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint endPoint = new IPEndPoint(ipAddr, 7777);

host : ip주소가 아닌 도메인주소로 사용하도록 한다. 

AddressList : IP주소 리턴

IPEndPoint : IP주소와 포트번호를 통해 생성

 

Listener.class

매개변수 OnAcceptHandler : Accept이 성공했을 때 불리는 콜백

_listenSocket.Bind(endPoint); : 넘겨 받아온 IPEndPoint의 바인드 처리

_listenSocket.Listen(10); : Listen 시작 클라이언트의 연결 요청을 대기상태

SocketAsyncEventArgs : 비동기 소켓의 관련한 패턴을 사용할 때? 쓰임

args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); : 작업이 완료되면 OnAcceptCompleted을 호출

RegisterAccept(args); : 최조 한번 등록

 

args.AcceptSocket = null; : 전에 사용했던 args이기 때문에 null 초기화 작업

bool pending = _listenSocket.AcceptAsync(args); : 완료되면 false를 리턴

즉시 완료되면 OnAcceptCompleted 실행

 

_OnAcceptHandler.Invoke(args.AcceptSocket); : 연결 성공시 송수신 처리

RegisterAccept(args); : 다시 Accept 처리.

 

Init()에서 최초 Accept 처리 -> Accept 성공 완료 콜백 OnAcceptCompleted 에서 Accept 처리 -> Accept처리 ...

로 계속 반복해서 Accept을 시도한다.


 

인프런 유니티로 만드는 MMORPG 게임 개발 시리즈를 학습 예제

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
네트워크) TPC/IP 프로토콜  (0) 2019.11.17
네트워크) 네트워크 구성  (0) 2019.11.13

스칼라

벡터가 크기와 방향이 있다면 스칼라는 크기만을 갖는 물리량이라고 말한다. (길이,넓이,시간,온도,질량,속력,에너지)

스칼라 왜 필요할까?

벡터 크기를 조정하는 데 사용한다. 스칼라는 방향이 없기 때문에 벡터에 스칼라를 곱하면 벡터의 크기만 바꿀 수 있는 것이다. 좌표계로 보면 아래 그림과 같다.

게임에서는 어떻게 이용하는지 살펴보자. 우선 저번 포스팅에 벡터의 뺄셈을 통해 이동할 방향벡터를 구할 수 있었다. 이 방향벡터에 스칼라를 곱하면 이동 벡터가 나오게 된다.

방향벡터(단위 벡터) x 스칼라(이동할 거리) = 이동 벡터

2020/10/23 - [StUdY/게임 수학] - 게임 수학) 벡터 뺄셈

캐릭터를 원하는 위치로 이동시키는 방법은 캐릭터 현재 위치 벡터 + 이동 벡터

 

반응형

'STUDY > 게임수학' 카테고리의 다른 글

게임수학)벡터 뺄셈  (0) 2020.10.23
게임수학) 벡터란, 벡터의 덧셈  (0) 2020.10.19

벡터의 뺄셈

벡터의 뺄셈은 덧셈과 같다. 우리가 알고 있는 3 - 2 = 1인 것처럼.  (3,0) - (2,0) = (1,0)이 된다. 음수인 좌표에 있는 값은 (3,2) - (-2,2) = (5,0)이 된다. 좌표로 보면 아래 그림과 같다.

뺄셈을 덧셈으로 바꿔보자. (3,2) - (-2,2) = (3,2) + (2,-2) = (5,0)

(-2,0)이 (2,-2)로 바뀌면서 화살표 머리 방향이 반대로 바뀌었다. 두 벡터의 뺀 값 (5,0)도 좌표로 표시해 보자

벡터의 덧셈에서 공부했던 것처럼 꼬리에서 머리로 이으면 두 벡터의 뺄셈 결과인 (5,0)을 알게 되었다. 여기서 주의해서 봐야 할 것은 (5,0)의 방향입니다. (3,2)를 을 가리키고 있습니다.

벡터의 뺄셈 언제 쓸까?

벡터의 뺄셈은 특정 위치에서 다른 위치를 바라보는 벡터의 방향을 알 수 있다.(방향벡터)  

유니티로 몬스터 위치에서 히어로 위치로 이동하도록 해봤다.

 

반응형

'STUDY > 게임수학' 카테고리의 다른 글

게임수학) 벡터와 스칼라의 곱셈  (0) 2020.10.30
게임수학) 벡터란, 벡터의 덧셈  (0) 2020.10.19

게임프로그래밍에서 벡터는 물체의 위치, 이동 등 다양하게 이용된다. 그렇기 때문에 지식이 필요하다. 책과 구글링, 서치를 통해 정리하면서 공부를 하려고 한다.

벡터의 사전적 의미

 

벡터의 표시법

 

벡터의 기본적인 성질에 대해서 알아보자

동등성 :  사전적 의미로 벡터는 크기방향만을 가지고 있다. 그렇기 때문에 원점의 특정한 위치는 아무런 의미를 갖지 않는다. 이게 무슨 말이냐??

내가 그림

위 4개의 벡터는 각각 다른 위치에 있지만, 크기와 방향은 같다. 그러니까 동일한 벡터이다. 

 

벡터는 왜 필요할까?

x,y나 특 정 위치를 표시하는 방법으로 표현할 수도 있지만, 벡터의 성질을 게임에서 활용하기 위해서이다.( 더 많은 것들을 표현할 수 있음)

예를 들어 지속적으로 맵 안에서 움직이는 캐릭터가  있다. 이 캐릭터는 일정한 속도로 움직인다. 이 상황에서 크기와 방향이 같은 벡터를 통해 어디에 놓아도 동일한 계산 결과가 나오게 된다.

벡터가 크기랑 방향을 갖고 있는건 알겠는데,  이걸로 뭘 어떻게  움직이는 건데..??

 

벡터의 덧셈

위 2개의 벡터의 덧셈 결과는? 어느 위치하냐는 의미가 없다고 했으니까, 각 좌표의 x끼리, y끼리 더하면 된다. 결괏값은 벡터(7,0)이다.  몇 가지 더 풀어보자

첫 번째 그림은 (5,0)  두번째 그림은 (5,1)

마지막으로 이 두 벡터를 더해보자.

위에서 봤던 문제처럼 (5,3)이라는 답을 쉽게 찾을 수 있다. 그러면 이 (5,3)을 벡터로 표시하면 어떻게 될까?

 두 벡터 덧셈은 시작점과 끝점을 연결하면 된다는 것을 알 수 있다.

이 말은 즉, 특정 위치에서 특정 거리만큼 떨어진 위치를 찾을 수 있다. 

반응형

'STUDY > 게임수학' 카테고리의 다른 글

게임수학) 벡터와 스칼라의 곱셈  (0) 2020.10.30
게임수학)벡터 뺄셈  (0) 2020.10.23

네트워크 구성TPC/IP 프로토콜

TCP/IP는 4단계 층으로 구성되는 계층적 프로토콜이다. 가장 하위 계층에는 네트워크 접속 계층이 있는 이는 하나의 계층으로 정의하기도 하고 또는물리 계층과 네트워크접속 계층, 2개의 계층으로 정의하기도 한다. 그 다음 패킷을 목적지까지 전송 책임을 수행하는 인터넷 프로토콜계층 그리고 종단간 신뢰성있는 연결을 수행하는 세그먼트 단위의 정보교환을 담당하는 전송 계층이 있으면 마지막으로 송수신지 응용 프로세스 사이 정보의 처리 기능을 수행하는 응용프로세스 계층이 있다.  

응용 계층

응용 계층은 원격의 프로세스 혹은 응용들 사이에 통신을 제공한다. HTTP, FTP, Telent, SMTP, SNMP기반의 응용서비스가 수행되는 계층이다.

  1. HTTP웹 서비스를 제공하는 응용 계층 프로토콜이다. 
  2. FTP파일 전송에 사용되는 프로토콜로서 파일의 전송을 위해 두개의 연결이 생성된다. 하나는 원격 시스템에 제어정보 송수신을 위해 연결된다. 그리고 연결 후 파일 전송을 위해 또 다른 연결이 수행된다.
  3. Telnet과 SMTP
  4. SNMP

전송 계층

1. TCP

전송 계층 프로토콜은 TCP와 UDP가 있다.  TCP 프로토콜은 두 종단 호스트간에 신뢰적인 연결형 서비스를 제공하여, 전송메세지의 정확한 수신지 도착 여부의 확인을 보장한다. 즉 시간 초과와 오류 재전송 그리고 데이터 흐름제어 기능이 제공된다.

네트워크 계층인 IP계층에서는 비연결형을 지향하므로 네트워크에 대한 에러제어와 흐름제어 기능을 수행하지 않기 때문에 TCP전송계층에서 에러제어와 흐름제어 기능이 제공된다. 

2. UDP

UDP프로토콜은 비연결형 서비스를 지원한다. UDP의 특징은 수신측에 패킷이 도착했는지 확인 여부를 보장하지 않으며 흐름제어의 기능을 제공하지 않는 비신뢰적인 서비스를 제공한다.  그러므로 수신된 데이터 훼손에 따른 무결성을 보장받지 못하므로 암호화기술이 적용될 수 있다. 네트워크 혼잡 시에 데이터 일부가 소실된다 하더라도 확인 작업이나 재전송 서비스가 지원되지 않는 특징을 가진다. UDP서비스는 제어용의 작은 메세지 혹은 재전송이 필요 없는 동영상 정보전송에는 적절한 서비스가 될 수 있다.

 

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
[네트워크] 유니티 네트워크 공부#1  (0) 2021.08.09
네트워크) 네트워크 구성  (0) 2019.11.13

클라이언트 프로그래머(초짜)지만 업무에 네트워크의 기본적인 지식은 필요하다고 생각되어 오늘부터 공부를 시작해보려고 한다!

네트워크

네트워크 구성

네트워크를 구축한다는 것은 사용자와 홈 그리고 사무실 등을 물리적 통신 설비를 기반으로 표준 통신 프로토콜로 연결하여 네트워크를 구축하는 것을 의미한다. 또한 네트워크는 또 다른 네트워크로 연결되어 거대한 인터넷으로 구성된다.

네트워크를 구성하는 물리적인 개념에서 하드웨어기반의 구성요소가 필요한데, 그 예로 라우터, 스위치, 이더넷 카드, 커넥터 허브 등이 있고, 서버 시스템과 개인용 컴퓨터 같은 호스등이 있다.

 

 

네트워크 구성요소 기능
라우터 IP주소기반 다른 네트워크와 통신 가능 장비
스위치 이더넷 주소기반 다음 목적지 회선 선택 장비
커넥터(RJ-45) 다양한 통신장비를 네트워크로 연결
이더넷 카드 단말기에 연결되어 데이터 송수신 역할
모뎀,허브,공유기 데이터전송을 위한 통신 주변 장치

네트워크를 구성하게 되면 거리와 공간의 제약을 극복하여 많은 정보기술의 다양한 장점을 활용할 수 있다. 먼저, 같은 네트워크 스토리지와 백업 장치를 비롯한 하드웨어와 소프트웨어 자원들 그리고 수많은 데이터와 응용 프로그램들의 공유가 가능하다. 

 

TCP / IP 프로토콜

표준 네트워크 프로토콜 기반의 인터넷에서는 네트워크 주요 서비스인 이메일 서비스,포털서비스와 게임 등 실시간으로 정보를 주고받는 애플리케이션 서비스를 어디서든지 이용할수 있게 된다. 네트워크 구축을 위해 사용되는 표준 프로토콜은 인터넷에서 사용되는 TCP/IP 프로토콜이다. TCP/IP 프로토콜을 이용하여 여러 토폴로지 형태의 네트워크를 연결한 것이 인터넷이다. 그리고 TCP/IP 프로토콜을 이용하여 내부 네트워크를 연결하여 내부 네트워크 사이 통신을 가능하게 한것이 인트라넷이다.

반응형

'STUDY > 네트워크' 카테고리의 다른 글

[네트워크] 멀티스레드 #1  (0) 2021.09.23
[네트워크] 유니티 네트워크 공부#1  (0) 2021.08.09
네트워크) TPC/IP 프로토콜  (0) 2019.11.17

운영체제 

교착상태

-  두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 떄문에 결과적으로 아무것도 못하는 상태

- 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제이다.

 

다중 프로그래밍 : CPU작업과 입출력 작업을 병행하는 것(메모리에 여러개의 프로그램을 상주시켜 하나의 CPU로 연산과 처리를 중첩시켜 CPU유휴시간을 감소하기 위한 기법

 

교착상태의조건

1. 자원점유와 대기

프로세스가 자신이 가질 수 있는 자원은 가지고 있으면서 다른 자원이 오기를 기다리는 것

 

2. 비선점

다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없다.

 

3. 순환대기

프로세스의 자원 할당에서 첫 번째 프로세스와 마지막 프로세스의 자원할당이 겹치게 되어 원형에 있는 모든 프로세스가 자원 할당을 받고자 기다리는 형태

 

4. 상호배제

한번에 한개의 프로세스만이 공유자원을 사용할 수 있어야 한다.

 

예방

1. 자원점유와 대기

프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.

 

2. 비선점

자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 한다.

 

3. 순환대기

자원을 선형 순서로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 한다.

 

4. 상호배제

한번에 여러개의 프로세스가 공유자원을 사용할 수 있도록 한다.

 

회피

교착상태가 발생하면 적절히 피하는 방법

 

각 프로세스의 요청과 방출에 대한 순서를 파악하고 있다면 우리는 각 요청에 대해서 가능한 미래의 교착상태를 피하기위해 프로세스가 대기해야하는 지를 결정할 수 있다는 점에 착안하여 나온 방법

즉, 어떤 프로세스가 요청을 할 때 미래에 대한 분석을 통해 나의 요청을 늦추는 방법으로 교착상태를 피할 수 있다.

 

 

 

 

 

 

학습참고 :

1. https://coding-factory.tistory.com/311

2. https://frontalnh.github.io

반응형

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

[컴퓨터 구조] 캐시이론 Locality  (0) 2021.09.23

1. visual SVN 다운로드

 

다운로드 : https://www.visualsvn.com/

 

VisualSVN - Subversion-based version control for Windows

VisualSVN makes your life easier with a reliable plug-in that integrates Subversion seamlessly with Visual Studio. Learn more... download licensing

www.visualsvn.com

2. VISUALSVNSERVER 다운로드 누르고 자신의 OS비트를 확인하고 다운로드한다.

3. NEXT를 쭉 눌러준다.

Administration Tools Only는 다른 컴퓨터에 Visual SVN서버가 설치되어있고 원격으로 관리하는 경우에 선택

4. 경로설정 

Location : Visual SVN Server 프로그램이 설치될 경로를 설정

Repositories : Commit한 소스들이 업로드 될 최상위 경로 지정

Server Port : 서버가 구동되었을 때 사용할 Port

 

특별한 경로가 없다면 Next

 

5. VisualSVN Server Manager

[Create New Repository] 서버에 폴더를 만들 수 있는 저장소

 

6. 서버에 만들 폴더 이름지정

그리고 next

 

7. 서버주소

서버주소가 만들어졌다.

 

8. SVN계정

 

계정을 만들어준다.

 

9. 권한부여

아까 생성한 계정을 클릭하고 권한을 부여하고

[Everyone]은 아무나 접근이 불가능하도록 No Access 해준다.

 

그 다음은 SubVersion을 설치하여 사용하면된다!

반응형

+ Recent posts