분류 전체보기

    [Swift] self

    self.프로퍼티명 // 클래스나 구조체 자신의 인스턴스에 속한 프로퍼티 self 키워드는 생략이 가능하지만, 만약 프로퍼티와 일반 변수의 이름이 같을 경우 구분을 위해서 self를 꼭 써주어야한다. class A { var name: String init(name: String) { self.name = name } } 이니셜라이저 내부에 있는 name 은 지역변수 > 매개변수 > 인스턴스 프로퍼티 순서로 무엇을 지칭하는지 찾음. 그래서 name = name 의 경우 두개 다 매개변수를 지칭하게 됨. 이때, 인스턴스 프로퍼티로 지칭하기 위해서 self를 사용함.

    [Swift] Guard문과 If문

    guard와 if의 차이는 guard는 항상 else문을 갖는다는 것이다. ⇒ else문을 강제하기 때문에 예외처리에 용이하다! func guardTest(person: [String: String]) { guard let name = person["name"] else { // else 를 안쓰면 compile error print("person is nil") return } print("Name: \\(name)") guard let location = person["location"] else { print("location is nil") return } print("Location: \\(location)") } guardTest(person: ["name": "Jedi"]) print() g..

    [운영체제] Process Management | 시스템 콜, CPU burst time

    프로세스 생성 부모 프로세스가 자식 프로세스를 생성 → 복제 생성 전체 프로세스는 트리 계층구조 형성 프로세스는 실행을 위해 자원을 필요로 함 운영체제로부터 받는다. 자원의 공유 부모와 자식이 자원을 공유할 수 있지만 독립적인 자원을 갖는 것이 원칙 Copy-on-write(COW) write가 발생했을 때(내용에 변화가 있을 때) 부모의 code, data, stack 등을 copy 한다. 수행 (Execution) 부모와 자신은 공존하며 수행되는 모델 자식이 종료(terminate)될 때까지 부모가 기다리는(wait - blocked) 모델 주소 공간(Address space) 자식은 부모의 공간을 복사함 (binary and OS data) 자식은 그 공간에 새로운 프로그램을 올림 fork() 시스..

    [운영체제] 프로세스 (2) | 동기/비동기식 입출력, Thread

    동기식 입출력과 비동기식 입출력 동기식 입출력(synchronous I/O) I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 구현 방법 1 I/O가 끝날 때까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법 2 (일반적인 방법) I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 비동기식 입출력 (asynchronous I/O) I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 ⇒ 두 경우 모두 I/O의 완료는 인터럽트로 알려줌 Thread A thread(or lightweight process) is a basic un..

    [네트워크] Network Layer - Application Layer(1) | HTTP

    Application Layer HTTP Transport Layer TCP/UDP Network Layer IP Link Layer WIFI, LTE, Ethernet Physical Layer 라우터는 네트워크 Layer까지만 존재 (Network, Link, Physical) Process의 Socket을 이용하여 다른 컴퓨터끼리 통신 IP주소, Port번호 사용 HTTP Hyper Text transfer protocol = Hypertext를 전달하는 프로토콜 Application Layer의 프로토콜 중 하나 HTTP 특징 처음에 TCP가 Connection을 맺으면 이후 HTTP 메시지가 교환 신뢰성 있는 통신 가능 메시지 교환 전 TCP Connection 생성 필요 stateless 상대..

    [운영체제] 프로세스 (1) | Process State, Context Switch, Scheduler

    프로세스의 개념 ⇒ 실행 중인 프로그램 프로세스의 구성 : 프로그램 코드(text section), 프로그램 카운터, 프로세서 레지스터 Stack: 데이터를 일시적으로 저장하는 영역 Data section: 프로그램의 가상 주소 공간 Heap: 코드 영역과는 별도로 유지되는 자유 영역 Code: 실행 명령을 포함하는 메모리이거나 목적 파일에 있는 프로그램 영역 프로세스의 문맥(context) CPU 수행 상태를 나타내는 하드웨어 문맥 Program Counter 각종 register 프로세스의 주소 공간 code, data, stack 프로세스 관련 커널 자료구조 PCB Kernel stack 프로세스의 상태 (Process State) 프로세스는 상태(state)가 변경되며 실행된다. Running C..

    [Error] Missing Info.plist value. A value for the Info.plist key 'CFBundleIconName' is missing in the bundle '{bundleid}'.

    App Store Connect에 앱 심사를 올리기 위해 Xcode Project를 Archive 하려고 하였으나 Upload 도중 다음과 같은 에러가 나타났다. Missing Info.plist value. A value for the Info.plist key 'CFBundleIconName' is missing in the bundle '{bundleid}'. Apps built with iOS 11 or later SDK must supply app icons in an asset catalog and must also provide a value for this Info.plist key. For more information see http://help.apple.com/xcode/mac/cu..

    [운영체제] Program Execution | 프로그램 실행

    프로그램의 실행 메모리주소를 바꾼다 = 점프한다 virtual memory 상에서 다른 영역으로 점프 불가 커널 주소 공간 커널 코드: 함수 형태로 인터럽트들에 대해 무슨 일을 해야할지 들어있음 data: 하드웨어를 관리하기 위한 자료구조들이 들어있음 사용자 프로그램이 사용하는 함수 함수(function) 사용자 정의 함수 'code' - 사용자 정의 함수 / 라이브러리 함수 자신의 프로그램에서 정의한 함수 라이브러리 함수 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수 자신의 프로그램의 실행 파일에 포함되어 있음 커널 함수 'code' - 커널 함수 운영체제 프로그램의 함수 커널 함수의 호출 = 시스템 콜 프로그램의 실행 A의 프로그램 실행 ~ 종료