본문 바로가기
반응형

IT188

[운영체제] 프로세스 동기화의 고전적인 문제 1. Bounded-buffer Problem shared data: buffer 자체 및 buffer 조작 변수 semaphore full=0, empty=m, mutex=1 #producer do{ produce an item in x p(empty) p(mutex) add x to buffer v(mutex) v(full) }while(1) 2. Readers Writers Problem 한 process가 DB에 write 중일 때 다른 process가 접근하면 안됨 read는 동시에 여럿이 해도 됨 해결방법 writer는 대기 중인 Reader가 하나도 없을 때 DB접근이 허용된다 일단 Writer가 DB에 접근 중이면 Reader들은 접근이 금지된다 Writer가 DB에서 빠져나가야만 Read.. 2023. 2. 8.
[운영체제] Semaphores Semaphores은 앞의 방식들을 추상화시킨 일종의 추상자료이다. 공유자원 획득과 반납을 도와준다 Semaphores s #자원의 개수 # p연산: 공유데이터 획득 while(s 2023. 2. 8.
[운영체제] 프로세스 동기화 문제 & 해결방법 프로세스들은 수행의 동기화를 위해 변수를 공유할 수 있다 do{ entry section critical section exit section remainder section } while(1); entry로 lock을 걸어서 critical section 접근을 막고 exit를통해 다른 프로세스가 critical section에 진입할 수 있게한다 프로그램적 해결법의 충족 조건 1. Mutual Exclusion(상호 배제) - 프로세스가 critical section 부분을 수행중이면 다른 모든 프로세스들은 그들의 critical section에 들어가면 안 된다 2. Progress - 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세.. 2023. 2. 7.
[프로그래머스] SQL 문제풀이 - 자동차 대여 기록에서 장기/단기 대여 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요. 풀이 1. date_format.. 2023. 2. 7.
[파이썬] 파이썬 formatting 방식 %-format 과str.format() 은 대표적인 formatting 방식이다. %-format은 앞에서 형식을 지정해주고 % 뒤에는 대입할 값을 입력한다. str.format()은 {} 사용해 값을 넣을 자리를 설정하고 .format으로 값을 설정한다 print('%s %s' % ('one', 'two')) print('{} {}'.format('one', 'two')) print('%d %d' % (1, 2)) print('{} {}'.format(1, 2)) %-format에 사용되는 형식 리스트다. 아래 표에 맞게 형식을 넣어주면 된다. type 설명 %s 문자열 %c 문자 1개 %d 정수 %f 부동소수 %o 8진수 %x 16진수 %% litetal % (문자 % 자체) python 3.6 이.. 2023. 2. 6.
[파이썬] 2차원 리스트 깊은복사 2차원 리스트를 복사하는 방법을 알아보자 1. deepcopy 모듈 import copy list_=[[1,2,3],[4,5,6]] list_copy=copy.deepcopy(list_) deepcopy모듈을 사용해 깊은 복사가 가능하다 2. slicing a = [[1, 2], [3, 4]] b = [arr[:] for arr in a] 1은 모듈만 외우면 편하게 사용할 수 있고 시간적인 측면에서는 2가 더 빠르다고 한다 각자의 상황에 맞게 골라서 사용하면 된다 2023. 2. 6.
[파이썬] 자료구조 깊이우선탐색(DFS) ''' 재귀함수 처리 못하면 스택에 매개변수, 지역변수, 복귀주소 저장 ''' def DFS(x): if x>0: DFS(x-1) print(x) if __name__=="__main__": DFS(3) 재귀함수를 dfs 방식으로 구현한 예시이다 ''' print root역할 , 위치에따라 순회 종류 결정됨 DFS(v*2) print(v,end=' ') #중위순회 DFS(v*2+1) DFS(v*2) DFS(v*2+1) print(v,end=' ') #후위순회 ex) 병합정렬 ''' def DFS(v): if v>7: return else: print(v,end=' ') #전위순회 DFS(v*2) DFS(v*2+1) if __name__=="__main__": DFS(1) print에 위치에따라 순회 종류.. 2023. 2. 3.
[파이썬] 파이썬으로 객체 지향 프로그래밍 구현 OOP(Object-Oriented Programming): 객체 지향 프로그래밍 객체: 실생활에서 일종의 물건, 속성과 행동을 가짐. OOP는 이러한 객체 개념을 속성은 변수, 행동은 함수로 표현 ex) 붕어빵 틀: class, 붕어빵: instance ※ 변수명 상식 - snake_case : 띄워쓰기 부분에 “_” 를 추가 뱀 처럼 늘여쓰기, 파이썬 함수/변수명에 사용 - CamelCase: 띄워쓰기 부분에 대문자 낙타의 등 모양, 파이썬 Class명에 사용 class 선언 class SoccerPlayer(object): Attribute 추가하기 - Attribute 추가는 __init___ , self와 함께! __init__은 객체 초기화 예약 함수 class SoccerPlayer(obje.. 2023. 1. 31.
[운영체제] 프로세스 동기화 & Race Condition 프로세스 간에 동기화에 대해 알아보자 E-box S-box CPU Memory 컴퓨터내부 디스크 프로세스 그 프로세스의 주소 공간 데이터가 저장되어 있는 storage box와 연산을 하는 execution box가 있다. 데이터를 s-box에서 읽어와서 연산을 하고 s-box에 다시 반영을 한다. 여기서 E-box가 여러 개인 경우가 생긴다. 저장공간을 혼자 사용하면 문제가 없는데 다른 실행박스와 공유한다고 하면 데이터 동기화 문제가 발생한다. 저장소에서 하나의 값에 대해서 한 실행박스는 1을 증가시키고 하나는 1을 감소시키려할 때 우리는 값은 변하지 않겠다라고 결과를 생각하게 된다. 하지만 실제 결과는 덧셈은 반영이 안돼고 1을 뺀 결과만 반영이 된다. 여러주체가 하나의 데이터에 동시에 접근하는 경우.. 2023. 1. 31.
728x90