세마포어, 뮤텍스, critical section

Linux 2018.06.15 11:48 Posted by smileyoon

세마포어란?

공유된 자원에 여러 개의 프로세스가 동시에 접근하면 문제가 발생합니다. 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 하는데, 이를 위하여 고안된 것이 세마포어입니다.

 

(세마포어와 뮤텍스의 차이)

세마포어(Semaphore) : 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것

뮤텍스(Mutex) : 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것

 

** Critical section 이란 ?

OS에서 Critical Section은 아주 중요한 부분이다.

- 다중 프로그래밍 운영체제에서 여러 프로세스가 데이타를 공유하면서 수행될 때 각 프로세스에서 공유 데이타를 액세스하는 프로그램 코드 부분을 가리킨다.

공유 데이타를 여러 프로세스가 동시에 액세스하면 시간적인 차이 때문에 잘못된 결과를 만들어 낼 수 있기 때문에 한 프로세스가 위험 부분을 수행하고 있을 때, 즉 공유 데이타를 액세스하고 있을 때는 다른 프로세스들은 절대로 그 데이타를 액세스하지 못해야 한다.

출처: http://jwprogramming.tistory.com/13 [개발자를 꿈꾸는 프로그래머]


시간 계산

Database/Oracle 2018.03.12 10:09 Posted by smileyoon
등록된 작업 수행 시 Start_date과 End_date를 확인할 수 있습니다
단순하게 (End_date-Start_date)하면 될꺼라고 생각이 들지만 그렇지 않습니다.

수행된 시간을 확인하기 위해서 아래와 같이 연산을 통해 초, 분, 시간 차이를 확인할 수 있습니다.

-- 초 차이 확인
SELECT ROUND((end_date-start_date)*24*60*60) FROM TBL;
 
 
-- 분 차이 확인
SELECT ROUND((end_date-start_date)*24*60) FROM TBL;
 
 
-- 시간 차이 확인
SELECT ROUND((end_date-start_date)*24) FROM TBL;


'Database > Oracle' 카테고리의 다른 글

시간 계산  (0) 2018.03.12
시간 다루기 / TRUNC, NEXT_DAY, SYSDATE 등등  (0) 2017.03.17

OS설치 후 바로 DB설치 -> Hostname 변경 후 이런저런 작업을 하고 있었습니다


이런 히스토리를 모르고 담당자가 계정 속성을 변경하려고 하였더니

'서버 수준의 URN 필터가 잘못되었습니다 ~~~~' 라는 에러 메시지가 발생했습니다. 


[원인]

메타데이터가 이전 Old_Hoatname으로 저장되어져 있었기 때문입니다.

sp_dropserver, sp_addserver 프로시저를 통해 메타데이터 변경해 주시기 바랍니다.


주의

기본 인스턴스일때와 명명된 인스턴스일때 약간의 구문 차이가 있으니 참고해 주시기 바랍니다.

[참고사이트]

SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기

https://docs.microsoft.com/ko-kr/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server#after-the-renaming-operation


'Database > Microsoft SQL Server' 카테고리의 다른 글

계정 속성 변경 실패 / URN  (0) 2018.02.08
SA 패스워드 초기화  (0) 2015.06.15
로그인 감사 설정 변경  (0) 2015.05.18
Pssdiag 수집 방법  (0) 2015.03.13
시점복원 / 로그체인  (0) 2015.03.13
SQL Server Native Client  (0) 2014.09.30

(AIX) LV 축소 및 확장 가능여부 확인 방법

OS 2018.02.08 11:42 Posted by smileyoon

AIX를 사용중에 있으며 A, B 파일시스템으로 구성되어져 있습니다.

A는 사용량이 적고, B는 사용량이 많습니다.


'A에는 있는 디스크를 축소하고 B에 붙여 사용하고 싶은데 가능할까요?'라는 문의를 받았습니다.


결론은? 가능합니다.

단!!! 같은 VG(Volume Group)에 LV들이 속해 있어야 합니다.



1) df -g

2) lsvg

3) lsvg -l [VG_Name] 3개의 명령어로 같은 VG에 속해 있는지를 확인할 수 있습니다.

'OS' 카테고리의 다른 글

(AIX) LV 축소 및 확장 가능여부 확인 방법  (0) 2018.02.08

GREP에 정규식 표현 사용하기

Linux 2017.04.27 14:52 Posted by smileyoon

백업 실행된 전체 시간을 확인하기 위해 로그 파일에서 'begin backup', 'end backup' 이벤트가 기록된 시점을 찾아야 했습니다. 


요새 정규 표현식을 자주 사용하게 되는데 GREP에서도 -E 옵션을 주면 정규 표현식을 사용할 수 있습니다.


정규식 표현

(A | B) -> a or b (or 연산자)


cat trace.log | grep -E '(begin | end) backup' | grep 04/11 

--주의!!! 공백 구분합니다.


다음에는 정규식에 사용되는 특수 문자에 대해서 정리해 보도록 하겠습니다. 

Backtick(백틱) '` `' / ~밑에 있는 기호

Linux 2017.04.26 14:57 Posted by smileyoon

~밑에 `는 백틱 or 쿼테이션이라고 부르고 ` ` 백틱안에 명령어를 (윈도우의 dir, 리눅스의 ls 등) 실행한 후 출력하는 용도로 사용합니다. 



예를 들어 


ls -alt의 명령어


test = `ls -alt` 변수 선언하고

echo $test 실행하면

ls -alt 실행하는 것과 동일한 효과를 볼 수 있습니다.


쉘 실행시간 확인하기 / time

Linux 2017.04.26 14:32 Posted by smileyoon

자동화 쉘을 만들어 프롬프트상에서 바로 실행한 후 총 수행 시간을 확인하고 싶었습니다. 확인해 보니 아주 간단한 명령어 하나로 수행 시간을 확인할 수 있습니다.


그것은 바로 time 명령어


실행할 명령어 앞에 


time [명령어]


실행해 주면 아래와 같은 결과가 나옵니다.


[출력]


smileyoon$ time date


2017. 04. 26 ~~~


real 0m0.002s -- 총 수행 시간

user 0m0.000s -- 사용자 모드에서 수행 시간

sys 0m0.002s -- 커널 모드에서 수행 시간

'Linux' 카테고리의 다른 글

GREP에 정규식 표현 사용하기  (0) 2017.04.27
Backtick(백틱) '` `' / ~밑에 있는 기호  (0) 2017.04.26
쉘 실행시간 확인하기 / time  (0) 2017.04.26
프롬프트에 절대경로 표시하기 / PS1변수  (0) 2017.04.26
Shell 확인  (0) 2016.08.11
CHMOD / 권한 변경하기  (0) 2016.08.10
TAG TIME, 타임

프롬프트에 절대경로 표시하기 / PS1변수

Linux 2017.04.26 14:25 Posted by smileyoon

[전체 사용자에 적용]하려면


/etc/bashrc 에 아래 내용 동일하게 추가



[사용자별 적용]은 아래와 같이


.bash_profile에


export PS1="[\u@\h][\$PWD]\\$"


추가 후 . ./bash_profile 실행해서 바로 적용


그러면


[UserName@HostName][전체경로]$로 표시됨을 확인할 수 있습니다.

'Linux' 카테고리의 다른 글

Backtick(백틱) '` `' / ~밑에 있는 기호  (0) 2017.04.26
쉘 실행시간 확인하기 / time  (0) 2017.04.26
프롬프트에 절대경로 표시하기 / PS1변수  (0) 2017.04.26
Shell 확인  (0) 2016.08.11
CHMOD / 권한 변경하기  (0) 2016.08.10
vi 편집기 명령어  (0) 2016.08.06

오라클 및 티베로 DB를 하다보면 JOB 등록 시 interval 설정이나, 시간과 관련된 쿼리문 작성 시 원하는 값을 얻기 위해서 시간을 잘 다루어야 합니다. 



[동작방식]

JOB 등록시 내부 동작 방식을 잘 알아둬야 합니다. 그리고 티베로의 경우 비활성화된 JOB을 다시 활성화 하게 되면 JOB이 바로 수행되기 때문에 주의를 요합니다. (반드시 NEXT_DAY를 지정해 주시기 바랍니다. 

 

Next_DAY값은 작업이 수행되는 시점에 interval 값을 참조하여 계산되어 집니다.



[핵심표현]


값/시/분/초


1/24  -- 1시 의미 예) 2/24 --2시

1/24/60 or 1/1440 -- 1분을 의미 예) 60/24/60은 1시간을 의미

1/24/60/60 or 1/86400 -- 1초를 의미



[다양한 예제]

여기서 시간은 24단위로 표시


--매일 01:00시 수행

SELECT TRUNC(SYSDATE+1)+(1/24) FROM DUAL;


--매주 일요일 01:00시에 수행 (NEXT_DAY함수 두번째 인수값의 범위는 1(일)~7(토))

SELECT NEXT_DAY(TRUNC(SYSDATE)+(1/24), 1) FROM DUAL;


--해당 월의 마지막 일 확인

SELECT TO_CHAR(LAST_DAY(SYSDATE), 'DD') FROM DUAL;



[번외]

--현재 스키마명 확인 쿼리 

SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') FROM DUAL;


--현재 로그인한 사용자명 확인 쿼리

SELECT * FROM USER_USERS;

'Database > Oracle' 카테고리의 다른 글

시간 계산  (0) 2018.03.12
시간 다루기 / TRUNC, NEXT_DAY, SYSDATE 등등  (0) 2017.03.17

2. 되다 / 돼다

우리말 2017.03.13 11:34 Posted by smileyoon

찾아보니 2가지 방법이 있었습니다. 2가지 방법을 다 알고 있으면 헷갈리지 않을꺼 같습니다. 


(방법1)

되다 / 돼다 중 어떤 걸 사용할 지 고민이 있을 경우 하와 해를 대입해보면 쉽게 구분할 수 있습니다.


(방법2)

무조건 '돼'가 맞다고 생각한 다음,  '돼'를 '되어'로 풀어봅니다. 

그래서 그 말이 된다면 그 '돼'는 맞는 말입니다. 말이  된다면 '돼'가 틀린 것입니다. 이럴 경우에는 '돼'를 '되'로 바꾸어 사용하시길 바랍니다.


(예제)

- 훌륭한 사람이 되고(하고) 싶다. (O)

- 훌륭한 사람이 돼고(해고) 싶다. (X)

- 훌륭한 사람이 되어고 싶다 (X)








'우리말' 카테고리의 다른 글

2. 되다 / 돼다  (0) 2017.03.13
1. 결재와 결제  (0) 2017.03.13
TAG 돼다, 되다