3-2 13

[mysql][프로그래머스]SQL 고득점 kit 답!!

select 3월에 태어난 여성 회원 목록 출력하기 select member_id, member_name, gender, date_format(date_of_birth, '%Y-%m-%d') as date_of_birth from member_profile where gender = 'w' and tlno is not null and month(date_of_birth) = 3; select 하는 date는 date_format을 이용해서 포맷을 변경해줘야함 특정 달을 선택하는 것은 날짜를 month로 씌워서 비교하면 된다. date_format에서 대소문자에 따라 어떤 format인지가 다르다. Y가 대문자면 1992 와 같은 형식이 나오고 y라면 92가 나온다. M이라면 march 이런 식으로 영어로..

3-2/DB 2022.03.04

[프로그래머스][join][mysql]없어진 기록찾기(left join ,right join)

https://programmers.co.kr/learn/courses/30/lessons/59042 코딩테스트 연습 - 없어진 기록 찾기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr outs테이블에는 있는데 ins테이블에는 존재하지않는 튜플들을 찾는 문제이다. left join을 사용하면 select outs.animal_id, outs.name from animal_outs outs left join animal_ins ins o..

3-2/DB 2022.02.24

메모리관리

주소 바인딩 논리적 주소를 물리적 메모리 주소로 연결시켜 주는 작업 앞서 프로그램이 메모리에 적재되면 해당 프로세스의 독자적인 주소공간이 생긴다. 그 주소공간을 논리적 주소(logical address) 라고 한다. (혹은 가장 주소) 논리적 주소 프로세스마다 독립적으로 가지는 주소공간 각 프로세스마다 0번지부터 시작 cpu가 보는 주소 물리적 주소 메모리에 실제 올라가는 위치 물리적 메모리의 낮은 주소영역에는 운영체제가, 높은 주소영역에는 사용자프로세스가 올라간다. cpu가 기계어 명령을 수행하기 위해 논리적 주소를 통해 메모리를 참조하게되면 해당 논리적 주소가 물리적 메모리의 어느 위치에 매핑되어있는지 확인해야한다. 논리적 주소를 물리적 주소로 연결시켜주는 작업을 주소 바인딩 이라고 한다. 주소바인딩..

3-2/OS 2021.12.25

CPU 스케쥴링

CPU란? 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙 처리장치 사용자 프로그램의 수행은 cpu작업, 입출력 작업의 반복으로 구성된다. 프로그램의 종류마다 빈도와 길이가 다른데 사용자프로그램이 cpu를 가지고 빠른 명령을 수행하는 단계인 CPU버스트 I/O 요청이 발생해 커널에 의해 입출력 작업을 진행하는 비교적 느릴 단계를 I/O버스트라고 한다. 이를 기준으로 프로세스를 나눈다. I/O 바운드 프로세스 I/O 요청이 자주 일어나 cpu 버스트가 짧은 프로세스 cpu 바운드 프로세스 I/O 요청이 적제 일어나 cpu 버스트가 긴 프로세스 I/O 바운드 프로세스는 주로 사용자와 인터렉션 하는 프로그램이므로 cpu 스케쥴링에서 이 프로세스가 우선적으로 cpu를 사용할수있도록 하는 스케쥴링이 필요하다. C..

3-2/OS 2021.12.23

프로세스의 생성(fork, exec,exit)

프로세스의 생성 부모프로세스가 자식프로세스를 복제 생성한다. 인간세계에서는 부모가 먼적 죽고 자식이 처리하지만(?) 프로세스 세계에서는 자식 프로세스가 먼저 죽고, 이를 부모 프로세스가 처리한다. 복제는 어떻게? 부모프로세스의 주소공간 내용을 그대로 자식 프로세스의 주소공간으로 복사한다. 부모 프로세스와는 다른 자식프로세스의 프로그램을 실행해야할 경우 복제된 주소공간 위에 새로운 프로그램의 주소공간을 덮어씌어 실행한다. fork() 시스템 콜 -> 자식 프로세스를 생성할 때 부모 프로세스의 내용을 그대로 복제 생성한다. exec() 시스템 콜 -> 새로운 프로그램으로 주소공간을 덮어씌운다. 복제하는 것은 fork()라는 시스템콜을 이용하고, 새로운 프로그램으로 덮어씌우는 것은 exec() 라는 시스템콜을..

3-2/OS 2021.12.23

프로세스의 개념

프로세스 실행중인 프로그램 프로세스를 잘 이해하기위해서 프로세스의 문맥을 이해해야한다. 프로세스 문맥에는 하드웨어 문맥 프로세스 주소공간 커널상의 문맥 으로 나누어 볼 수 있다. 하드웨어 문맥 cpu의 수행상태 프로그램 카운터, 각종 레지스터에 저장하고 있는 값들 프로세스 주소공간 code, data, stack으로 구성되는 자신만의 독자적인 주소 공간 (프로세스마다 가짐) 커널상의 문맥 프로세스가 되면 OS는 프로세스를 관리하기위해 OS의 data영역에 자료구조를 구성한다. PCB, 커널 스택 PCB(process controll block) 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담은 커널 내부의 자료구조 문맥교..

3-2/OS 2021.12.22

OS의 목표와 정의

정말 간단하게 배운내용을 정리하려고 한다. http://www.kocw.net/home/m/cview.do?cid=3646706b4347ef09 운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw.net 우리학교의 OS수업은 바로 리눅스 커널을 이용해 실습하였기에 습득은 빨랐지만 이론적인 내용을 자세히 알수없는것이 아쉬웠다. 그래서 좋다는 수업을 찾아 반효경 교수님의 강의를 찾았고 회원가입하여 수강하고있다. 2022년이 오기전에 완강하는것이 목표다. [2021 / 12 / 31 완강 완료] OS란 컴퓨터 HW 바로 위에 설치되어 사용자 및 다른 모든 ..

3-2/OS 2021.12.20

[mysql]Workbench_ER다이어그램 그리는 법

먼저 이렇게 열심히 쿼리문을 이용해서 테이블을 만들고, 관계를 설정해준다. 각 실행결과는 ctrl + enter을 이용해 확인 할 수 있다. 상단 메뉴에서 Database -> Reverse Engineer을 선택한다. 이런 창이 뜹니다. 포트번호와 username이 맞는 것을 확인하고 next를 누릅니다. 해당 username의 password를 작성해줍니다. 비밀번호가 잘 확인이 되면 이런식으로 출력됩니다. next를 눌러줍니다. 리버스할 스키마를 선택하고 next를 눌러줍니다. 비밀번호를 또 입력해줍니다 여기서 next -> finish를 누르면 ER 다이어그램이 완성됩니다. 이런식으로 ER다이어그램이 그려집니다~ "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니..

3-2/DB 2021.12.10

[mysql] not in , in , exists, not exists 예시

food, color 두개의 table 이 있다. 이때 not in과 in이 어떻게 행동하는지 알아보자 먼저 알아야하는 것은 null연산은 unkown이다. 먼저 IN in 은 내부쿼리를 통해 list를 만들고 외부쿼리의 값과 비교한다. ( 내부쿼리 -> 외부쿼리) not IN은 unkown을 미포함한다. "=" 연산과 같다. select * from food where number in (select number from color); 먼저 내부쿼리를 통해 list를 만든다. color의 number이므로 {1, 2, 3, 4, null }이다. 이를 food 테이블의 number와 비교한다. null과 null의 연산은 unkown이고, in에서는 미포함이므로 null은 출력되지않는다. 즉, food..

3-2/DB 2021.11.17

[Mysql]Trigger생성과 삭제(feat. delimiter)

더보기 Mysql의 기능 Trigger에 대해서 설명해보고자 한다. ASSERTION 문이 존재하지만 ASSERTION은 기본 SQL에 포함되지 않는다. mysql에서도 지원하지않는다고 하니 비슷한 역할을 하는 Trigger을 알아보자 Trigger 특정 사건이 발생하고, 특정 조건이 만족될때 저절로 실행되는 말그대로 방아쇠 같은 역할을 한다. 위키백과의 말을 빌리자면 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 트리거는 사건, 조건, 동작을 포함한다. 어떤 사건이 발생하면 검사가 시작되고, 동작을 수행할 조건이 명시되어있으며, 주어진 조건이 만족되면 동작을 실행한다. 예시 코드을 통해 알아보자 delimiter // create trigger [트리거 이름] [before/upda..

3-2/DB 2021.10.25