原创 關於操作系統的幾個重要概念(六)

什麼是虛擬存儲器 我們在創建一個進程的過程中似乎從來沒有考慮過我們的進程在計算機中佔有哪一部分的內存地址空間,會不會和其他的進程所佔用的內存地址空間重疊而造成不可預料的結果。我們從來都是理所當然的認爲計算機中只運行了這一個進程,能

原创 LintCode :O(1)時間檢測2的冪次

LintCode :O(1)時間檢測2的冪次 題目 用 O(1) 時間檢測整數 n 是否是 2 的冪次。 樣例 n=4,返回 true; n=5,返回 false. 思路 判斷n是否爲2的冪次,則判斷n的二進制表達中是否只有一位是

原创 關於操作系統的幾個重要概念(五)

IPC的幾種通信方式 管道、有名管道 管道是一種半雙工的通信方式,他不能同時進行讀寫,如果要同時進行讀寫就要設置兩個通道,並且普通的通道只能在父子、兄弟這些有親屬關係的進程中進行通信。而有名管道則可以在無親戚關係的進程中進行通信。

原创 LintCode : 尋找旋轉排序數組中的最小值

LintCode : 尋找旋轉排序數組中的最小值 題目 假設一個旋轉排序的數組其起始位置是未知的(比如0 1 2 4 5 6 7 可能變成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 你可以假設數組中不存在重複

原创 LintCode : 尋找峯值

LintCode : 尋找峯值 題目 你給出一個整數數組(size爲n),其具有以下特點: 相鄰位置的數字是不同的 A[0] < A[1] 並且 A[n - 2] > A[n - 1] 假定P是峯值的位置則滿足A[P] >

原创 LintCode : 更新二進制位

LintCode :更新二進制位 題目 給出兩個32位的整數N和M,以及兩個二進制位的位置i和j。寫一個方法來使得N中的第i到j位等於M(M會是N中從第i爲開始到第j位的子串) 樣例 給出N = (10000000000)2,M

原创 LintCode : 二進制表示

LintCode :二進制表示 題目 給定一個數將其轉換爲二進制(均用字符串表示),如果這個數的小數部分不能在 32 個字符之內來精確地表示,則返回 “ERROR”。 樣例 n = “3.72”, 返回 “ERROR”. n =

原创 LintCode : 搜索區間

LintCode : 搜索區間 題目 給定一個包含 n 個整數的排序數組,找出給定目標值 target 的起始和結束位置。 如果目標值不在數組中,則返回[-1, -1] 樣例 給出[5, 7, 7, 8, 8, 10]和目標值t

原创 LintCode : 搜索旋轉排列數組

LintCode : 搜索旋轉排列數組 題目 假設有一個排序的按未知的旋轉軸旋轉的數組(比如,0 1 2 4 5 6 7 可能成爲4 5 6 7 0 1 2)。給定一個目標值進行搜索,如果在數組中找到目標值返回數組中的索引位置,否

原创 VS Code - gdb - debug 安裝過程

VS Code debug 之旅 因爲mac下沒有自帶的debug工具,vscode中debug的功能也需要自己安裝配置,所以今天小半天都栽在了這上面。 其實amc下安裝是相對簡單的,在安裝gdb之前我們應該首先配置好homebr

原创 關於操作系統的幾個重要概念(四)

Windows內存管理方式:段式存儲,頁式存儲,段頁式存儲 普通的存儲管理系統中,作業存儲時需要佔用一個連續的存儲區,當一個作業的大小大於任何一個空閒存儲區時,就不能將作業裝入運行,即使內存中所有的空閒區之和遠遠大於作業的大小。如

原创 LintCode : 第一個錯誤代碼的版本

LintCode : 第一個錯誤代碼的版本 題目 代號庫的版本號是從1到n的整數。 你可以通過isBadVersion的接口來判斷版本號版本是否在單元測試中出錯,具體接口詳情和調用方法請見代碼的註釋部分。 樣例 給出 n=5 調

原创 LintCode : 尾部的零

LintCode :尾部的零 題目 設計一個算法,計算出n階乘中尾部零的個數 樣例 11! = 39916800,因此應該返回 2 思路 要判斷有多少個零,則判斷因子中有多少個10,要判斷有多少個10,則判斷因子中有多少個2和5。

原创 關於操作系統的幾個重要概念(七)

虛擬地址、邏輯地址、線性地址、物理地址的區別 物理地址 存儲器被組織成一個由N個連續的字節大小的單元組成的數組。每一個字節都有一個唯一的物理地址,第一個字節爲地址0,第二個字節爲地址1···第N個字節爲地址N - 1。 線性地址

原创 關於操作系統的幾個重要概念(一)

進程和線程的區別 先要了解進程和線程的區別,首先我們要知道什麼是進程,什麼是線程,仔細看了看csapp中關於進程和線程的描述,加上自己的理解和腦補,總結起來大概是這樣的。 進程 最經典的定義是一個執行中的程序的實例。 書上有提到