분류 전체보기
-
오늘 공부 해볼것은 열거형입니다.Enumeration 이라고 하는데 Swift에서 자주 쓰이는 문법입니다. 열거형이란 ? The Swift Programming Language에서 정의된 열거형입니다.좀 더 쉽게 설명하자면 타입 자체를 한정된 케이스로 정의 할 수 있는 타입입니다.열거형은 Swift에서 1급 객체로 취급됩니다. 열거형을 사용할 상황 ? 위의 정의만 읽어보면 언제 열거형을 써야할지 감이 잘 안잡힐 수도있습니다. 예를 들어 요일이라는 변수가 있다고 가정해본다면요일 변수에는 올 수 있는 값은 "월,화,수,목,금,토,일" 이 7가지 중 한가지 일것입니다. var 요일: String = "월, 화, 수, 목, 금, 토, 일" 중 한가지 현재 요일은 String 타입의 변수입니다.값을 입력받을때..
[Swift] 열거형(Enumeration) - Enum 1/3오늘 공부 해볼것은 열거형입니다.Enumeration 이라고 하는데 Swift에서 자주 쓰이는 문법입니다. 열거형이란 ? The Swift Programming Language에서 정의된 열거형입니다.좀 더 쉽게 설명하자면 타입 자체를 한정된 케이스로 정의 할 수 있는 타입입니다.열거형은 Swift에서 1급 객체로 취급됩니다. 열거형을 사용할 상황 ? 위의 정의만 읽어보면 언제 열거형을 써야할지 감이 잘 안잡힐 수도있습니다. 예를 들어 요일이라는 변수가 있다고 가정해본다면요일 변수에는 올 수 있는 값은 "월,화,수,목,금,토,일" 이 7가지 중 한가지 일것입니다. var 요일: String = "월, 화, 수, 목, 금, 토, 일" 중 한가지 현재 요일은 String 타입의 변수입니다.값을 입력받을때..
2023.06.03 -
Q1 : 파일 입출력 시에 응용프로그램, 운영체제, 디스크 장치가 각각 사용하는 주소에 대해 설명하고 주소 변환이 어디서 이루어지는지 설명하라. 여기서 운영체제는 CHS 물리 주소를 사용하지 않고 논리 블록 주소만 사용한다. 이렇게 함으로써 얻어지는 장점은 무엇인가? A1 : 응용프로그램은 파일 내 바이트 주소를 사용하고 운영체제는 논리 블록 주소를 사용하며 디스크 장치는 디스크 물리 주소를 사용한다. 응용프로그램에서 운영체제에게 바이트 주소를 알려주면 운영체제는 바이트 주소를 논리 블록 주소로 변환하고 논리 블록 주소를 디스크장치에게 전달해주면 디스크 장치는 논리 블록 주소를 CHS 물리 주소로 변환한다. 운영체제가 논리 블록 주소만 사용하는 이유는 저장매체의 종류나 하드웨어 특징에 관계없이 구현가능하..
11장 파일 시스템 관리Q1 : 파일 입출력 시에 응용프로그램, 운영체제, 디스크 장치가 각각 사용하는 주소에 대해 설명하고 주소 변환이 어디서 이루어지는지 설명하라. 여기서 운영체제는 CHS 물리 주소를 사용하지 않고 논리 블록 주소만 사용한다. 이렇게 함으로써 얻어지는 장점은 무엇인가? A1 : 응용프로그램은 파일 내 바이트 주소를 사용하고 운영체제는 논리 블록 주소를 사용하며 디스크 장치는 디스크 물리 주소를 사용한다. 응용프로그램에서 운영체제에게 바이트 주소를 알려주면 운영체제는 바이트 주소를 논리 블록 주소로 변환하고 논리 블록 주소를 디스크장치에게 전달해주면 디스크 장치는 논리 블록 주소를 CHS 물리 주소로 변환한다. 운영체제가 논리 블록 주소만 사용하는 이유는 저장매체의 종류나 하드웨어 특징에 관계없이 구현가능하..
2023.05.28 -
Q1 : 요구 페이징 기법에 대해, 왜 이 기법이 발생하기 되었는지를 포함하고 요구의 의미를 담아, 요구 페이징을 3줄로 정의하라. A1 : 설치된 물리 메모리보다 큰 프로세스를 실행시키거나 여러 프로세스들을 합친 크기가 설치된 물리 메모리보다 클때 이를 실행시키기 위한 방법. 프로세스의 모든 페이지를 메모리에 올려 놓지 않고 해당 페이지가 필요할 때 물리메모리로 적재 하고 필요하지 않을때에는 하드디스크의 스왑영역에 저장. Q2 : dirty page란 어떤 페이지를 뜻하는가? 어떻게 구분하는가? A2 : 페이지가 프레임에 적재된 이후 수정된 페이지를 스왑아웃 할때 스왑영역에 저장. modified/dirty bit가 1이면 dirty page Q3 : 페이지 폴트(page fault)는 언제 발생하는가..
10장 가상 메모리Q1 : 요구 페이징 기법에 대해, 왜 이 기법이 발생하기 되었는지를 포함하고 요구의 의미를 담아, 요구 페이징을 3줄로 정의하라. A1 : 설치된 물리 메모리보다 큰 프로세스를 실행시키거나 여러 프로세스들을 합친 크기가 설치된 물리 메모리보다 클때 이를 실행시키기 위한 방법. 프로세스의 모든 페이지를 메모리에 올려 놓지 않고 해당 페이지가 필요할 때 물리메모리로 적재 하고 필요하지 않을때에는 하드디스크의 스왑영역에 저장. Q2 : dirty page란 어떤 페이지를 뜻하는가? 어떻게 구분하는가? A2 : 페이지가 프레임에 적재된 이후 수정된 페이지를 스왑아웃 할때 스왑영역에 저장. modified/dirty bit가 1이면 dirty page Q3 : 페이지 폴트(page fault)는 언제 발생하는가..
2023.05.28 -
Q1 : 페이징에서 논리 주소는 페이지 번호와 옵셋으로 구성된다. 1GB의 메모리를 가진 32비트 컴퓨터에서 한 페이지의 크기가 8KB인 경우 다음 질문에 답하라. (1) 논리 주소에서 페이지 번호와 옵셋의 크기는 각각 몇 비트인가? A : 페이지번호의 크기 : 19비트. 옵셋의 크기 : 13비트 (2) 물리 메모리는 몇 개의 프레임이 존재하는가? A : 2^30 / 2^13 = 2^17 (3) 사용자 주소 공간의 크기가 2GB일 때, 이 컴퓨터에서 작성할 수 있는 응용프로그램의 크기는 얼마인지 이유와 함께 말하라. A : 2GB. 프로세스의 주소공간은 실제주소공간이 아닌 가상공간이기 때문에 운영체제가 정해준 사용자 공간의 크기만큼 작성가능하다. (4) 페이지 테이블의 한 항목 크기가 4바이트라고 할 때..
9장 페이징 메모리Q1 : 페이징에서 논리 주소는 페이지 번호와 옵셋으로 구성된다. 1GB의 메모리를 가진 32비트 컴퓨터에서 한 페이지의 크기가 8KB인 경우 다음 질문에 답하라. (1) 논리 주소에서 페이지 번호와 옵셋의 크기는 각각 몇 비트인가? A : 페이지번호의 크기 : 19비트. 옵셋의 크기 : 13비트 (2) 물리 메모리는 몇 개의 프레임이 존재하는가? A : 2^30 / 2^13 = 2^17 (3) 사용자 주소 공간의 크기가 2GB일 때, 이 컴퓨터에서 작성할 수 있는 응용프로그램의 크기는 얼마인지 이유와 함께 말하라. A : 2GB. 프로세스의 주소공간은 실제주소공간이 아닌 가상공간이기 때문에 운영체제가 정해준 사용자 공간의 크기만큼 작성가능하다. (4) 페이지 테이블의 한 항목 크기가 4바이트라고 할 때..
2023.05.28 -
Q1 : 식사하는 철학자란 어떤 문제를 다루기 위한 문제 제기인가? 누가 처음 든 예이며, 이를 공식화한 사람은 누구인가? 제기된 문제와 해결하는 방법은 무엇인지 설명하라. A1 : 병렬 처리에서의 동기화 문제와 해결 방법을 다루기 위한 문제. Edsger Dijkstra가 처음든 예이고 Prentice Hall출판사에서 공식화 하였다. Q2 : 교착상태를 정의해보라. A2 : 자원을 소유한 스레드들 사이에서 각 스레드는 다른 스레드가 소유한 자원을 요청하여 무한정 대기하고 있는 현상. Q3 : 교착상태가 발생할 필요조건 4가지를 무엇이라고 하는가, 그리고 4가지의 조건은? A3 : 상호배제 : 각 자원은 한번에 하나의 스레드에게만 할당 소유하면서 대기 : 스레드가 한 자원을 소유하면서 다른 자원을 기다..
7장 교착상태Q1 : 식사하는 철학자란 어떤 문제를 다루기 위한 문제 제기인가? 누가 처음 든 예이며, 이를 공식화한 사람은 누구인가? 제기된 문제와 해결하는 방법은 무엇인지 설명하라. A1 : 병렬 처리에서의 동기화 문제와 해결 방법을 다루기 위한 문제. Edsger Dijkstra가 처음든 예이고 Prentice Hall출판사에서 공식화 하였다. Q2 : 교착상태를 정의해보라. A2 : 자원을 소유한 스레드들 사이에서 각 스레드는 다른 스레드가 소유한 자원을 요청하여 무한정 대기하고 있는 현상. Q3 : 교착상태가 발생할 필요조건 4가지를 무엇이라고 하는가, 그리고 4가지의 조건은? A3 : 상호배제 : 각 자원은 한번에 하나의 스레드에게만 할당 소유하면서 대기 : 스레드가 한 자원을 소유하면서 다른 자원을 기다..
2023.05.28 -
Q1 : 멀티스레드 응용프로그램을 작성하면 반드시 스레드 동기화가 필요한지에 대해 자신의 생각을 간단히 논하라. A1 : 반드시 필요하진 않은것 같다 멀티스레드 응용프로그램이여도 공유데이터에 접근하지않고 개별데이터로 실행되는 프로그램이라면 스레드 동기화가 필요하지 않기 때문이다. Q2 : 스레드 동기화가 무엇인지 나름대로 설명하는 긴 문장을, 상호 배재, 임계 구역, 멀티스레드, 원자 명령의 단어를 연결하여 작성해보라. A2 : 멀티스레드 응용프로그램을 실행중 다수의 스레드가 공유데이터에 동시에 접근하여 공유 데이터가 훼손되어 이를 막기위한 방법이 필요해졌다. 스레드 동기화는 스레드가 공유 데이터에 접근하는 코드의 영역인 임계구역에 한 스레드만 접근하게 하는 기술이다. 임계구역을 어느 시점에서 한 스레드..
6장 스레드 동기화Q1 : 멀티스레드 응용프로그램을 작성하면 반드시 스레드 동기화가 필요한지에 대해 자신의 생각을 간단히 논하라. A1 : 반드시 필요하진 않은것 같다 멀티스레드 응용프로그램이여도 공유데이터에 접근하지않고 개별데이터로 실행되는 프로그램이라면 스레드 동기화가 필요하지 않기 때문이다. Q2 : 스레드 동기화가 무엇인지 나름대로 설명하는 긴 문장을, 상호 배재, 임계 구역, 멀티스레드, 원자 명령의 단어를 연결하여 작성해보라. A2 : 멀티스레드 응용프로그램을 실행중 다수의 스레드가 공유데이터에 동시에 접근하여 공유 데이터가 훼손되어 이를 막기위한 방법이 필요해졌다. 스레드 동기화는 스레드가 공유 데이터에 접근하는 코드의 영역인 임계구역에 한 스레드만 접근하게 하는 기술이다. 임계구역을 어느 시점에서 한 스레드..
2023.05.28 -
의존성 역전이 왜 필요한지 알아봅시다. 먼저 의존성 주입이 무엇인지를 간단히 알아본다면의존성 : 서로 다른 객체 사이에 의존관계가 존재주입 : 외부에서 객체 또는 데이터를 생성해서 넣는 것 import UIKitclass Person { var name: String init(name: String) { self.name = name }}// Person에 name "바지" 주입let 사람 = Person(name: "바지") Person(name: "바지") 이부분이 바로 의존성을 주입해주는 것입니다. 외부에서 name에 값을 주고 있으니까요. 그럼 이제 의존성주입이 무엇인지 간단히 알아봤으니 왜 의존성 역전이 필요한지 알아보겠습니다. 아래와 같은 코드가 있다고..
[iOS] DI(Dependency Injection) 의존성 역전의존성 역전이 왜 필요한지 알아봅시다. 먼저 의존성 주입이 무엇인지를 간단히 알아본다면의존성 : 서로 다른 객체 사이에 의존관계가 존재주입 : 외부에서 객체 또는 데이터를 생성해서 넣는 것 import UIKitclass Person { var name: String init(name: String) { self.name = name }}// Person에 name "바지" 주입let 사람 = Person(name: "바지") Person(name: "바지") 이부분이 바로 의존성을 주입해주는 것입니다. 외부에서 name에 값을 주고 있으니까요. 그럼 이제 의존성주입이 무엇인지 간단히 알아봤으니 왜 의존성 역전이 필요한지 알아보겠습니다. 아래와 같은 코드가 있다고..
2023.05.27 -
import Foundation extension String { var convert: String { self.replacingOccurrences(of: "C#", with: "c") .replacingOccurrences(of: "D#", with: "d") .replacingOccurrences(of: "F#", with: "f") .replacingOccurrences(of: "G#", with: "g") .replacingOccurrences(of: "A#", with: "a") } } func solution(_ m:String, _ musicinfos:[String]) -> String { let m = m.convert var result: [(title: String, time: In..
[Swift] [3차] 방금그곡import Foundation extension String { var convert: String { self.replacingOccurrences(of: "C#", with: "c") .replacingOccurrences(of: "D#", with: "d") .replacingOccurrences(of: "F#", with: "f") .replacingOccurrences(of: "G#", with: "g") .replacingOccurrences(of: "A#", with: "a") } } func solution(_ m:String, _ musicinfos:[String]) -> String { let m = m.convert var result: [(title: String, time: In..
2023.05.13