操作系统
文章平均质量分 61
跳着迪斯科学Java
已转iOS
展开
-
进程创建的几种方式
进程创建的几种方式1.forkfork用于创建子进程,系统调用函数:pid_t fork(void) 返回值是当前进程的pid调用fork的进程我们称为父进程(父进程的返回值是0)fork原理:当一个进程调用fork,操作系统会为该进程创建一个几乎一模一样的新进程。当fork完成时,两个进程的内存、寄存器、程序计数器等状态都完全一致,但它们是完全独立的两个进程,拥有不同的PID和虚拟内存空间,在fork完成后它们会各种独立地执行,互不干扰。fork中还有写时拷贝的机制,一开始两个进程的地址空间原创 2021-06-13 11:29:12 · 3993 阅读 · 0 评论 -
自旋锁的实现
自旋锁的实现test-and-set代码:typedef struct lock_t { int flag;}lock_t;void init(lock_t *mutex){ mutex->flag = 0;}void lock(lock_t *mutex){ while(mutex->flag == 1); mutex->flag = 1;}void unlock(lock_t *mutex){原创 2021-03-31 17:40:16 · 229 阅读 · 0 评论 -
操作系统(5) 并发控制(1)线程的互斥
操作系统(5) 并发控制(1)线程的互斥关键并发术语:**临界区(critical section)**是访问共享资源的一段代码,资源通常是一个变量或者数据结构**竞态条件(race condition)**出现在多个执行线程大致同时进入临界区时,它们都试图更新共享的数据结构,导致了令人惊讶的(也许是不希望的)结果**不确定性(indeterminate)**程序由一个或多个竞态条件组成,程序的输出因运行而异,具体取决于哪些线程在何时运行。这导致结果不是确定的(deterministic),而我们原创 2021-03-30 00:06:32 · 274 阅读 · 0 评论 -
操作系统(4)状态机视角下的程序执行
操作系统(4)状态机视角下的程序执行有限状态机(Finite-state machine, FSM)表示有限个状态在一定的条件下发生某个动作导致从一个状态转换到另一个状态的模型。有限状态机的要素:有限状态机=有向图程序=有限状态机其中,大部分的指令执行结果都是确定,也有少部分的指令执行结果不确定导致会进入多种不确定状态的一种,但状态也是有限的,因为内存能表示的结果也是有限的。不确定的会导致多个后续状态(rdrand和系统调用等)不确定的指令举例:x86-64的例子:原创 2021-03-18 18:13:27 · 562 阅读 · 0 评论 -
操作系统(3) 多处理器编程:从入门到放弃
操作系统(3) 多处理器编程:从入门到放弃入门:理解多线程三个放弃:原子性、有序性、可见性并发:介绍进程与线程的区别:进程:正在运行的程序,系统分配资源和调度的基本单位,内存中可以同时加载多个进程,每个进程都有自己独立的地址空间,互相不会干扰。每个一段时间,进程间会发生上下文切换,进程发生切换,信息会保存再进程控制块(PCB)中线程:线程是操作系统能够进行运算调度的最小单位。它被包含在线程中,是线程中的实际运作单位。一个进程内可以有多个线程,每个线程共享内存,但有独立的堆栈。多个线程之间也原创 2021-03-18 15:14:04 · 136 阅读 · 0 评论 -
SPOOLing技术
SPOOLing技术SPOOLing是什么?最近一直在学操作系统,这个名词和假脱机一起频繁出现,阅读了一些资料后写下总结留个记录。SPOOLing:SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,他的核心思想是以联机的方式得到脱机的效果。低速设备经通道和外设在主机内存的缓冲存储器与高速设备相联,该高速设备通常是辅存。为了存放从低速设备上输入的信息,或者存放将要输出到低速设备上的信息(来自内存),在辅存分别开辟一固定区域,叫“输出井”(对输出),或者“输入井”(原创 2021-03-17 23:19:43 · 1391 阅读 · 0 评论 -
linux下undefined reference to 、`pthread_create‘,undefined reference to `pthread_join‘
linux下undefined reference to 、`pthread_create’,undefined reference to `pthread_join’源代码:#include <stdio.h>#include <assert.h>#include <pthread.h>void *mythread(void *arg){ printf("%s\n", (char*)arg); return NULL;}原创 2021-03-16 22:53:29 · 322 阅读 · 0 评论 -
操作系统(2)应用眼中的操作系统:系统调用
操作系统(2)应用眼中的操作系统:系统调用什么是(应用)程序可执行的文件(程序的二进制代码和数据)和其他数据文件Linux支持多种可执行文件·格式ELF(Executable Linkable Format)最常用正在运行的称为进程操作系统中有许多进程对象在运行时,进程会在CPU上执行,进行计算使用操作系统API访问操作系统中的其他对象系统中常见的应用程序ELF二进制文件文件处理常用命令:vi a.c 直接编辑文件。按i进入编辑模式,:q不保原创 2021-03-13 17:53:24 · 218 阅读 · 0 评论 -
操作系统(1) 发展历史
操作系统(1) 发展历史1940s手工作业,实现方式如下:逻辑门:电子管(vacuum tubes)存储区:延迟线(delay lines)输入输出:打孔纸带/指示灯当时的计算机并没有操作系统这一说操作系统:使程序能够更好运行的系统软件1940s的计算机程序是相对机械的数值计算不需要也没有操作系统操作系统中唯一的对象就是独占整个计算机运行的程序1950s更快更小的逻辑门(晶体管)、更大的内存(磁芯)、丰富的I/O设备I/O设备的速度已经严重低于处理器的速度中断机制原创 2021-03-13 17:52:25 · 164 阅读 · 2 评论