自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 算法第四版习题解答(1.1 Basic Programming Model)

前言使用的是《算法》第四版英文版,主要是习题解答。书中jar包的导入请戳:算法(第四版)中algs4.jar下载和使用EXERCISES1.1.11.1.21.1.3import java.util.Scanner;public class Something { public static void main(String[] args) { Sc...

2022-10-14 19:24:00 61

原创 C++实现太阳系行星系统

实验楼项目:C++实现太阳系行星系统关于详细知识跟着实验做比较好基础知识做这个项目需要知道一些基础知识:OpenGLGLUT类设计main.cpp#include<GL/glut.h>#include "solarsystem.hpp"#define WINDOW_X_POS 50#define WINDOW_Y_POS 50#define WIDHT ...

2022-10-14 19:22:00 130

原创 备份、恢复与性能调优

备份与恢复概述根据备份的方法将备份分为:Hot Backup(热备)(在线备份)Cold Backup(冷备)(离线备份)Warm Backup(温备)热备是指数据库运行中直接备份,对正在运行的数据库操作没有任何的影响;冷备是指备份操作是在数据库停止的情况下,一般只需要复制相关的数据库物理文件即可;温备同样是在数据库运行中备份,但是会对当前数据库的操作有所影响。按照备份后的内容...

2022-10-14 19:21:00 42

原创 InnoDB存储引擎:事务

认识事务概述事务:访问并更新数据库中各种数据项的一个程序执行单元。数据库引入事务的主要目的:事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以确保要么所有修改都已经保存了,要么所有修改都不保存。InnoDB存储引擎中的事务完全符合ACID的特性:原子性(atomicity)(整个数据库事务是不可分割的工作单位)一致性(consistency)(事务将数据库从...

2022-10-14 19:21:00 51

原创 MySQL体系结构和存储引擎

1. 数据库和实例数据库:物理操作系统文件或其他形式文件类型的集合。实例:MySQL数据库由后台线程以及一个共享内存区组成。(数据库实例才是真正用于操作数据库文件的)实例与数据库的关系通常是一一对应的,但是在集群情况下可能存在一个数据库被多个数据实例使用的情况。MySQL被设计为一个单进程多线程架构的数据库,也就是说MySQL数据库实例在系统上的表现就是一个进程。从概念上说,数据库是文件...

2022-10-14 19:20:00 18

原创 InnoDB存储引擎

1. InnoDB体系架构1.1 后台线程后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据;此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能够恢复到正常状态。后台线程有三种:Master Thread(核心线程;主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性)IO Thread(负责IO请求的回调处理)...

2022-10-14 19:20:00 21

原创 InnoDB存储引擎:文件和表

文件构成MySQL数据库和InnoDB存储引擎表的各种类型文件:参数文件(告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数)日志文件(用来记录MySQL实例对某种条件做出响应时写入的文件)socket文件(当用UNIX域套接字方式进行连接时需要的文件)pid文件(MySQL实例的进程ID文件)MySQL表结构文件(用来存放MySQL表结构定义文件)存储引擎...

2022-10-14 19:19:00 22

原创 InnoDB存储引擎:索引与算法

InnoDB存储引擎索引概述InnoDB支持以下几种常见的索引:B+ 树索引 (传统意义上的索引,这是目前关系型数据库系统中查找最为常用和最为有效的索引;B+ 树索引并不能找到一个给定键值的具体行,能找到的只能是被查找数据行所在的页)全文索引 (将存储于数据库中的整本书或整篇文章中的任意内容信息查找出来的技术)哈希索引 (自适应,InnoDB存储引擎会根据表的使用情况自动为表生成哈希索...

2022-10-14 19:18:00 15

原创 InnoDB存储引擎:锁

什么是锁锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。InnoDB 存储引擎锁的实现和 Oracle 数据库非常类似,提供一致性的非锁定读、行级锁支持。行级锁没有相关额外的开销,并可以同时得到并发性和一致性。lock 与 latch在数据库中,lock 与 latch 斗可以被称为...

2022-10-14 19:18:00 23

原创 操作系统导论习题解答(41. Fast File System (FFS))

Locality and The Fast File System"old UNIX file system" looked like this:super block(S): contains information about the entire file systeminode region: contains all the inodes for the file systemdat...

2022-10-14 19:14:00 20

原创 操作系统导论习题解答(40. File System Implementation)

File System Implementation这章会介绍一个简单的文件系统vsfs(Very Simple File System)。该系统为简化版的UNIX系统,纯软件;有现在大部分文件系统中的基本磁盘结构、访问方法和各种策略。带着问题学习:如何实现一个简单的文件系统?1. The Way To Think要想理解文件系统如何工作,就要理解文件的系统的两个不同方面:数据结构(...

2022-10-14 19:13:00 27

原创 操作系统导论习题解答(39. Files and Directories)

Interlude: Files and Directories带着问题学习:操作系统应如何管理持久性设备?什么是API?实施的重要方面是什么?1. Files And Directories在虚拟化存储方面有两个重要的抽象:文件(file)目录(directory)文件:一组字节的线性组合,每个文件你都能进行读或写。每个文件都有一个低级名字(low-level name),文件...

2022-10-14 19:12:00 26

原创 操作系统导论习题解答(37. Hard Disk Drives)

Hard Disk Drives带着问题:磁盘是如何存储和获取数据的?1. The Interface磁盘可以看作n个扇区的数组(驱动器地址空间从0到n - 1)。多扇区操作是可以的。许多文件系统一次将读或写很大字节的内容。但是,在更新磁盘时,驱动制造商唯一保证的就是单个512字节扇区的写入是原子级别的。如果发生不合时宜的功率损耗,则仅较大部分写入的可能完成(破损写入(torn writ...

2022-10-14 19:12:00 33

原创 操作系统导论习题解答(38. Redundant Disk Arrays (RAID))

Redundant Arrays of Inexpensive Disks (RAIDs)带着问题学习:如何制作容量大、速度快、可靠的磁盘?解决上述问题使用了一种技术叫做Redundant Array of Inexpensive Disks(RAID):协同使用多个磁盘。RAIDs相对于单个磁盘有如下几点优势:性能(performance)容量(capacity)可靠性(reli...

2022-10-14 19:12:00 50

原创 操作系统导论习题解答(36. I/O Devices)

I/O Devices带着问题学习:如何将I/O集成到系统中?一般机制是什么?如何使它们高效?1. System Architecture上图所示,I/O设备被分成三层。但是为什么需要将其分层?最直接的原因:物理(physics)和成本(cost)。高性能通道没有太多空间插入设备且设计总线的成本高。采用分层结构,使性能越高的通道离CPU越近。当然,随着科技的发展,现今的系统结构又进一...

2022-10-14 19:11:00 25

原创 操作系统导论习题解答(33. Event-based Concurrency)

Event-based Concurrency (Advanced)我们前面讨论并发问题都是使用多线程。但是,关于并发的问题不止这一方面,还有使用基于GUI的应用程序和因特网服务器的并发,这些叫做基于事件的并发(event-based concurrency)。要解决的基于事件的并发问题有两个:在多线程应用程序中如何正确管理并发性在多线程应用程序中开发人员如何控制在给定时刻的调度内容...

2022-10-14 19:11:00 18

原创 操作系统导论习题解答(31. Semaphores)

Semaphores带着问题学习:如何使用信号量(semaphores)?1. Semaphores: A Definitionsemaphore是一个具有整数值的对象,可以使用两个例程来对其进行操作。POSIX中两个例程为sem_wait()和sem_post()。在使用之前必须初始化,如下所示:该例程sem_init()的第三个参数表示初始化值为1,第二个参数0表示在一个进程中线...

2022-10-14 19:10:00 46

原创 操作系统导论习题解答(32. Concurrency Bugs)

Common Concurrency Problems带着问题:如何处理常见的并发错误问题?1. What Types Of Bugs Exist?主要研究4个开源应用:MYSQLApacheMozillaOpenOffice2. Non-Deadlock Bugs大部分并发问题都是non-deadlock bugs。此类问题主要分为两类:atomicity viol...

2022-10-14 19:10:00 21

原创 操作系统导论习题解答(30. Condition Variables)

Condition Variables输出结果如下:在多线程情况下我们可以尝试使用共享变量,可以但是效率非常低下:问题来了:在多线程情况下,线程应该如何等待条件?1. Definition and Routinescondition variable有两个操作:wait() // 当一个线程希望被设置成sleep状态时被调用signal() // 当一个线程改变了程序中的某值,...

2022-10-14 19:09:00 28

原创 操作系统导论习题解答(29. Locked Data Structures)

Lock-based Concurrent Data Structures带着问题:给定一个数据结构,如何给其添加锁使其拥有正确性和高效性?1. Concurrent Counters1.1 Simple But Not Scalable上述代码满足了正确性,但是对于性能,我们一无所知。为了了解性能优劣,做了一个基准测试,如下所示(precise):从上图可以看出,单线程性能可以,但是...

2022-10-14 19:09:00 18

原创 操作系统导论习题解答(28. Locks)

Locks为了解决在执行一系列指令时中间发生中断事情,引入了lock。1. Locks: The Basic Idea使用lock,关键部分为balance = balance + 1。2. Pthread Locks传递了一个变量来锁定和解锁,因为可能使用不用的锁来保护不同的变量(提高并发性);还可以保护不同的数据和具有不同锁的数据结构,从而允许更多线程进入一次锁定代码。3. ...

2022-10-14 19:09:00 23

原创 操作系统导论习题解答(26. Concurrency and Threads)

Concurrency: An Introduction我们这里引入了thread(线程)的概念,与前面所说process(进程)的区别如下:线程之间进行上下文切换地址空间保持不变。每个线程都将有一个stack。1. Why Use Threads?在深入了解thread之前,首先需要知道为什么要使用thread。至少有如下两个原因:parallelismto avoid ...

2022-10-14 19:08:00 12

原创 操作系统导论习题解答(27. Thread API)

Interlude: Thread API带着两个问题学习本章节:OS创造和控制线程预留了什么接口?这些接口是如何被设计以实现易用性和实用性?1. Thread Creation2. Thread Completion3. Locks除了创建和加入线程,另一个最有用的函数集就是为了使关键部分互斥的lcoks。下面是一对函数:int pthread_mutex_lock(p...

2022-10-14 19:08:00 19

原创 操作系统导论习题解答(22. Swapping: Policies)

Beyond Physical Memory: Policies对于OS的replacement policy,如何决定哪个(些)page(s)应该被移出内存是非常重要的,弄不好就会严重影响性能。当然的,为了避免极端情况下的行为发生,OS还包括一些调整措施。1. Cache Management在讨论策略之前,我们可以让主存保留一部分pages,这样就形成了cache。对于每个progr...

2022-10-14 19:07:00 27

原创 操作系统导论习题解答(23. Complete VM Systems)

Complete Virtual Memory Systems通过VAX/VMS和LINUX两个系统来说明前面所说的部分在完整的VM系统中如何体现。1. VAX/VMS Virtual Memory1.1 Memory Management HardwareVAX-11为每个进程提供了32位虚拟地址,page大小为512字节,即一个虚拟地址包含23位VPN和9位offset,VPN的高2...

2022-10-14 19:07:00 19

原创 操作系统导论习题解答(21. Swapping: Mechanisms)

Beyond Physical Memory: Mechanisms效率就是金钱。为了提高效率,一台计算机肯定不能一次只运行一个程序,而是一次运行多个程序。但是这样的话,page肯定不能全部存在内存中,所以就需要将page存在磁盘中。1. Swap Space首先我们要做的就是在磁盘中预留出一些空间给page,方便page存入和取出,这样的空间就叫做交换空间(swap space)。OS...

2022-10-14 19:07:00 32

原创 操作系统导论习题解答(20. Advanced Page Tables)

Paging: Smaller Tables这章解决page带来的第二个问题:page table太大,会占用太多内存。1. Simple Solution: Bigger Pages一种非常简单的方法就是虚拟地址位数不变的情况下,增大page的大小,这样page的数量就会减少,相应的page table就会变小。但是这引入了一个问题,就是page太大的话,未使用的地址空间就会增多,简而言...

2022-10-14 19:06:00 27

原创 操作系统导论习题解答(19. Translation Lookaside Buffers)

Paging: Faster Translations (TLBs)使用分页(paging)可能会导致高性能开销,因为分页需要大量的映射信息。由于该映射信息存储在物理内存中,所以对其进行查找要产生额外的内存开销。为了解决这一问题,我们就需要依赖OS的老朋友硬件,在芯片的MMU中添加TLB(translation-lookaside buffer)。每次引用虚拟内存时,硬件首先检测TLB,查看...

2022-10-14 19:06:00 12

原创 操作系统导论习题解答(18. Introduction to Paging)

Paging: Introduction在解决大多数空间管理问题时,操作系统会采用两种方法中的一种。一种是前面我们所提及到的segmentation,很不幸的是这种方法实现起来很困难。另一种方法就是接下来要介绍的paging。1. A Simple Example And Overview下图就是一个64KB的虚拟地址空间被分成了4个paging。下图是将上图的虚拟page转换为实际物理...

2022-10-14 19:05:00 34

原创 操作系统导论习题解答(17. Free Space Management)

Free-Space Management使用segmentation实现虚拟内存时,我们可能会遇到上图所示情况,总共未使用的空间是20字节,但是被分成了2个10字节的内存段,如果有个15字节的程序请求CPU给它分配内存,CPU只能拒绝这个请求。这一章就是为了解决这个问题。1. Low-level Mechanismsvoid *malloc(size t size)void free...

2022-10-14 19:05:00 13

原创 操作系统导论习题解答(16. Segmentation)

Segmentation1. Segmentation: Generalized Base/Bounds我们可以看一下(Figure 16.1),尽管每个CPU都有一对硬件寄存器(base register和bounds register),但是还是不可避免的会产生内存浪费(阴影部分表示未被使用)。为了解决这个问题,就引入了segmentation:既然每一个MMU(内存管理单元)有一对...

2022-10-14 19:04:00 52

原创 操作系统导论习题解答(15. Address Translation)

Mechanism: Address TranslationIn developing the virtualization of the CPU, we focused on a general mechanism known as limited direct execution (or LDE ).1. An Examplevoid func () { int x = 3000;...

2022-10-14 19:04:00 15

原创 操作系统导论习题解答(13. Address Spaces)

The Abstraction: Address Spaces1. Early Systems在早期系统时代,操作系统和程序都存储在实际的物理地址中。2. Multiprogramming and Time Sharing为了提高efficiency,人们尝试用一台机器处理多个程序,进而引入了time sharing。3. The Address Space为了 easy to ...

2022-10-14 19:03:00 16

原创 操作系统导论习题解答(14. Memory API)

Interlude: Memory API1. Types of Memory对于一个即将运行的C程序,有两种分配内存的方式。第一种为stack memory,也叫做automatic memory。当你调用 func(), 编译器做剩下的工作,确保在stack上给变量x分配内存地址。void func () { int x; // declares an integer on th...

2022-10-14 19:03:00 22

原创 操作系统导论习题解答(10. Multi-CPU Scheduling)

Homework (Simulation)In this homework, we’ll use multi.py to simulate a multi-processor CPU scheduler, and learn about some of its details. Read the related README for more information about the sim...

2022-10-14 19:02:00 18

原创 操作系统导论习题解答(9. Lottery Scheduling)

Lottery Scheduling0. Basic ConceptA : 75 tickets (0~74)B:25 tickets (75~99)A1 + A2:1000 ticketsB1:10 tickets 注意:要区分一个进程和一个线程的tickets。如下所示,A和B分别有100tickets,A中有两个需要处理的任务A1和A2,总共有1000tickets,每个任务...

2022-10-14 19:00:00 20

原创 操作系统导论习题解答(8. Multi-level Feedback)

0. 文件地址Homework1. MLFQ: Basic Rules2. Attempt #1: How To Change Priority2.1 Example 1: A Single Long-Running Job2.2 Example 2: Along Came A Short JobIn this example, there are two jobs: A, ...

2022-10-14 19:00:00 18

原创 操作系统导论习题解答(7. CPU Scheduling)

0. 文件地址Homework1. Workload Assumptions2. Scheduling Metrics3. First In, First Out (FIFO)4. Shortest Job First (SJF)5. Shortest Time-to-Completion First (STCF)6. A New Metric: Response Tim...

2022-10-14 18:59:00 40

原创 操作系统导论习题解答(5. Process API)

0. installing and using of CygminSince Cygwin was installed at the request of the teacher when taking the basic computer class, I will not introduce it here.1. The fork() System Call// p1.c#inclu...

2022-10-14 18:58:00 21

原创 操作系统导论习题解答(4. Processes)

Homework (Simulation)This program, process-run.py, allows you to see how process states change as programs run and either use the CPU (e.g., perform an add instruction) or do I/O (e.g., send a requ...

2022-10-14 18:58:00 21

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除