12 2021 档案
摘要:概念 原子操作(atomic action):也叫primitive(原语、基元),它是操作系统用语范畴。指由若干条指令组成的,用于完成一定功能的一个过程。 原语是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断。 操作系统只需在执
阅读全文
摘要:其实Java并发框架的基石一共有两块,一块是本文介绍的CAS,另一块就是AQS,后续也会写博客介绍。 什么是CAS机制 CAS机制是一种数据更新的方式。在具体讲什么是CAS机制之前,我们先来聊下在多线程环境下,对共享变量进行数据更新的两种模式:悲观锁模式和乐观锁模式。 悲观锁更新的方式认为:在更新数
阅读全文
摘要:System.Threading.Thread类 涉及到的类和枚举 Volatile 类Interlocked 类SpinLock 类SpinWait类Barrier 类ThreadLocal<T> 类ApartmentState 枚举ThreadPriority 枚举ThreadStart 类Th
阅读全文
摘要:调度的概念 1. 调度的基本概念 在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。 处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、髙效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。 处理机调度是多道程序操作系统的基础,它是操作系
阅读全文
摘要:本文为第三篇,进程管理之五状态模型,进程在操作系统里边是有多个状态的,本文就是了解进程在操作系统中的多个状态 1、进程的五个状态 创建状态 就绪状态 阻塞状态 执行状态 终止状态 2、进程处于这五种状态时在做什么 (1)就绪状态 当进程被分配到除CPU以外的所有必要资源后,就处于就绪状态 只要再获得
阅读全文
摘要:背景 一个CPU core同时刻只能执行一个进程,如果我们不加以控制的话,一个进程可能使用CPU core直到运行结束,于是出现了操作系统调度器和调度算法(策略),而进程也成为了调度单位。 操作系统进程调度算法 进程调度是操作系统的一个服务,进程调度算法也称 CPU 调度算法,CPU 调度处理是从就
阅读全文
摘要:1秒=1000毫秒(ms)=1,000,000 微秒(μs)=1,000,000,000 纳秒(ns)=1,000,000,000,000 皮秒(ps) 1个CPU时钟周期=时钟频率 2GHz CPU=2000,000,000次每秒=20亿次/秒=时钟周期=(1/20亿)秒=0.5纳秒 cpu时间片
阅读全文
摘要:CPU 上下文切换是什么 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。 CPU上下文的分类 CPU 上下文切换根据任务的不同,可以分为以下三种类
阅读全文
摘要:背景 为了确保在线程中声明特定类型的变量,在每个线程中的值都是唯一的,不受到其他线程对该变量读写的影响。也就是俗称的线程本地存储 (TLS),可用于存储对线程和应用程序域唯一的数据。 例如:主线程中声明了变量A ,只能由主线程进行读取和写入。子线程虽然可以使用变量A(相当于复制一个A,可以对该变量进
阅读全文
摘要:内存模型概述 MSDN:理论与实践中的 C# 内存模型 MSDN:理论与实践中的 C# 内存模型,第 2 部分 内存模型就是内存一致性模型。 以下内如来自维基百科 内存一致性模型列表 线性一致性(Linearizability)或严格一致性(Strict consistency):任何对一个内存位置
阅读全文
摘要:overview 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁)、SpinLocked(自旋锁)、易变构造(volatile关键字、volatile类、Thread.VolatitleRead|Thread.VolatitleWrite)、MemoryBar
阅读全文
摘要:转载自:https://gandalfliang.github.io/2019/01/15/loop-hoisting/ Loop Hoisting 在上篇文章中,提到 Loop Hoisting ,这是一个常见的编译器优化项。我们总是能通过汇编代码等低级语言来“窥探”代码实际是怎么“指示”硬件运行
阅读全文
摘要:CPU硬件有它自己的内存模型,不同的编程语言也有它自己的内存模型。 在 C# 的语言规范中 ECMA-334,对于Volatile关键字的描述: 15.5.4 Volatile fieldsWhen a field-declaration includes a volatile modifier,
阅读全文
摘要:背景 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁)、SpinLocked(自旋锁)、易变构造(volatile关键字、volatile类、Thread.VolatitleRead|Thread.VolatitleWrite)、MemoryBarrier。
阅读全文
摘要:往袋子里面装苹果 错误案例示范 关于C#多线程的文章,大部分都在讨论线程的起停或者是多线程同步问题。多线程同步就是在不同线程中访问同一个变量(一般是线程工作函数外部的变量),众所周知在不使用线程同步的机制下,由于竟态的存在会使某些线程产生脏读或者是覆盖其它线程已写入的值(各种混乱)。而另外一种情况就
阅读全文
摘要:线程本地存储(TLS:Thread Local Storage) 线程本地存储(Thread Local Storage),字面意思就是专属某个线程的存储空间。变量大体上分为全局变量和局部变量,一个进程中的所有线程共享地址空间,这个地址空间被划分为几个固有的区域,比如堆栈区,全局变量区等,全局变量存
阅读全文
摘要:1. 简介 1、延迟初始化出现于.NET 4.0,主要用于提高性能,避免浪费计算,并减少程序内存要求。也可以称为,按需加载。 2、从net 4.0开始,C#开始支持延迟初始化,通过Lazy关键字,我们可以声明某个对象为仅仅当第一次使用的时候,再初始化,如果一直没有调用,那就不初始化,省去了一部分不必
阅读全文
摘要:重命名将MyThread.exe 重命名 一下其他名字后就可以了。
阅读全文
摘要:概述 线程主要学习什么,通过一个月的摸索、终于总结出来了:学习Thread类涉及到学习Thread类涉及到线程单元状态: ApartmentState、GetApartmentState\SetApartmentState内存屏障:VolatileWrite()、VolatileRead()、Mem
阅读全文
摘要:什么是句柄 句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。 我们知道,Windows是一个以虚拟内存为基
阅读全文
摘要:一、进程间通信简述 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess C
阅读全文
摘要:一、同步上下文(SynchronizationContext)概述 由来 多线程程序在.net框架出现之前就已经存在了。这些程序通常需要一个线程将一个工作单元传递给另一个线程。Windows程序以消息循环为中心,因此许多程序员使用这个内置队列来传递工作单元。每个想要以这种方式使用Windows消息队
阅读全文
摘要:【原创】 本文只是个人笔记,很多错误,欢迎指出。 环境:vs2022 .net6.0 C#10 参考:https://blog.csdn.net/brook_shi/article/details/50803957 Await 就像一个一元运算符:它接受一个参数,一个可等待的("awaitable"
阅读全文
摘要:await的作用: 1、await是一个标记,告诉编译器生成一个等待器来等待可等待类型实例的运行结果。 2、一个await对应一个等待器 ,任务的等待器类型是TaskAwaiter/TaskAwaiter<TResult>。 3、Await 就像一个一元运算符:它接受一个参数,一个可等待的"awai
阅读全文
摘要:async的作用: 1、async是一个标记,告诉编译器这是一个异步方法。 2、编译器会根据这个标志生成一个异步状态机。 3、编译器将原异步方法中的代码清空,写入状态机的配置,原先异步方法中的代码被封装入状态机。 4、async 关键字是上下文关键字,原因在于只有当它修饰方法、lambda 表达式或
阅读全文
摘要:原文连接:执行上下文与同步上下文 - .NET 并行编程 (microsoft.com) 执行上下文与同步上下文 斯蒂芬 6月15日, 2012 最近,我被问了几次关于 ExecutionContext 和 SynchronizationContext 的各种问题,例如它们之间的区别是什么,"流动"
阅读全文
摘要:转载地址:https://www.liaoxuefeng.com/wiki/1177760294764384/1179611198786848 事务是什么? 【事务】:是用户定义的一个数据库操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单元 例如: 在执行SQL语句的时候,某些业务要求
阅读全文
摘要:对 C# 开发者来说,不可不理解清楚 Thread、ThreadPool 和 Task 这三个概念。这也是面试频率很高的话题,在 StackOverflow 可以找到有很多不错的回答,我总结整理了一下。 Thread Thread 是一个实际的操作系统级别的线程(OS 线程),有自己的栈和内核资源。
阅读全文
摘要:I/O管理器 nt!_IRP IRP表示一个I/O请求包结构体,它用来封装执行一个特定I/O操作所需要的所有参数以及I/O操作的状态。IRP的表现也类似于一个线程独立调用栈因此它可以从一个线程传递到另一个线程,也可以通过驱动实现的队列传递给一个DPC例程。IRPs是Windows异步I/O处理模型的
阅读全文
摘要:文章作者:r00tk1t 发布时间:2018年01月08日 - 21时56分 最后更新:2020年10月20日 - 21时01分 原始链接:https://r00tk1ts.github.io/2018/01/08/关键的Windows内核数据结构一览(上)/ 近期一直在整理归纳知识体系,译几叠好文
阅读全文
摘要:转载地址:https://blog.csdn.net/qq_38499859/article/details/80057427一.目录文章目录 操作系统3 ————进程控制块(PCB)详解 一.目录 二. 进程控制块 1.概述 2.进程控制块中的信息 3.进程控制块的作用 4.进程控制块的组织方式
阅读全文
摘要:怎么理解程序中的同步和异步把线程比作道路,目标比作任务。同步:同道中人或者朝着同一个目标去的。异步:道不同,不相为某或者朝着不同的目标去的。并发:很短的时间内同时发生的事件
阅读全文
摘要:装载地址:https://www.1024sou.com/article/566302.html 一、大数据时代的现状 据统计,YouTube上每分钟就会增加500多小时的视频,面对如此海量的数据,如何高效的存储与处理它们就成了当前最大的挑战。但在这个对硬件要求越来越高的时代,CPU却似乎并不这么给
阅读全文
摘要:◆ 协程 由程序员手动切换。 属于线程,是在线程里面跑的,因此协程又称微线程和线程等。由于不用进行线程上下文切换,因此效率会更高。 资源: 拥有自己的栈空间,大小动态调整。 安全性: 拥有自己的寄存器上下文和栈。 上下文切换: 无消耗,直接操作栈。调度切换是用户(程序员)手动切换,可控的切换时机,很
阅读全文
摘要:内核对象简介 内核对象就是 一些数据结构该结构用来描述存储内核中的一个内存块中的数据信息。 内存块是一种数据结构,其中的数据成员负责维护该对象的相应信息,这个数据结构以及其中的数据成员只能由内核访问,应用程序是无法访问到的,更别说修改其中的数据成员了。 概念:内核对象可以供系统和应用程序使用来管理各
阅读全文
摘要:在.net framework框架上,一个进程可以有多个appdomain。因此一个进程可以运行多个程序。 应用程序域的出现: (来自msdn) 在.net出现以前,一个进程下,只能运行一个应用程序,而在,net出现后,一个进程下,可以运行多个应用程序,这都是因为应用程序域的出现。 以前使用进程边界
阅读全文
摘要:CPU架构要谈超线程和多核,就不得不谈CPU的架构和逻辑。无关的技术细节太多,这里略去。我们重点谈一下CPU中两个相关的模块:1)Processing Unit(运算处理单元),简称PU2)Architectual State(架构状态单元),简称ASPU一般就是执行运算,比如算数运算加减乘除。AS
阅读全文
摘要:并发 在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥 微观角度 所有的并发处理都有排队等候,唤醒,执行等这样的步骤,在微观上他们都是序列被处理的,如果是同一时刻到达的请求(或线程)也会根据优先级的不同,而
阅读全文
摘要:前言 Windows的内部实现也近似于“一切皆文件”的思想,当然,这一切都只在内核里才有,下载一个WinObj这软件就可以看到,Windows上各种设备、分区、虚拟对象都是挂载到根“\”下的,通过这个树可以访问各种设备、驱动、文件系统等等。 Windows与Linux不同的就是把这些对象又重新封装了
阅读全文
摘要:转载:https://cloud.tencent.com/developer/article/1744660 二、异步与多线程 1)基本概念 1. 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥其中
阅读全文
摘要:一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条
阅读全文
摘要:所有的现代操作系统中,CPU是在两种不同的模式下运行的: 注意以下内容来自微软: windows用户模式和内核模式 运行 Windows 的计算机中的处理器有两个不同模式:用户模式 和内核模式 。 用户模式和内核模式都是针对CPU运行状态来说的,在用户模式下,CPU无法执行一些特权指令,而在内核模式
阅读全文
摘要:编程范式paradigm(philosophy) 其实所谓架构就是限制,限制源码放在哪里、限制依赖、限制通信的方式,但这些限制比较上层。编程范式是最基础的限制,它限制我们的控制流和数据流:结构化编程限制了控制权的直接转移,面向对象编程限制了控制权的间接转移,函数式编程限制了赋值,相信你看到这里一定一
阅读全文
摘要:WMI应用(一个系统自带的测试WMI语句的工具) 1. 开始-运行-输入:wbemtest 回车2. 单击"连接", 输入:root\cimv2 回车; 或者ROOT\SecurityCenter 3. 单击"查询", 输入:SELECT * FROM Win32_Process 应用; 或者SEL
阅读全文
摘要:文件保护:文件访问类型和访问控制 为了防止文件共享可能会导致文件被破坏或未经核准的用户修改文件,文件系统必须控制用户对文件的存取,即解决对文件的读、写、执行的许可问题。 为此,必须在文件系统中建立相应的文件保护机制。 文件保护通过口令保护、加密保护和访问控制等方式实现。 其中,口令保护和加密保护是为
阅读全文
摘要:AccessControl 命名空间 结构图 解说: DirectorySecurity=目录ACLFileSecurity=文件ACLFileSystemAuditRule=目录和文件中SACL中的ACEFileSystemAccessRule=目录和文件中DACL中的ACEGetAccessCo
阅读全文
摘要:案例1、主体(包含用户和组)和标识(用户名)的使用。 PrincipalPolicy枚举:主体类型 分为window主体、未认证的主体和未分配主体GenericPrincipal、GenericIdentity主体类:自定义普通的主体,该主体是认证的。WindowsPrincipal、Windows
阅读全文
摘要:前言 前几天自己在学习域渗透时突然对Windows的身份认证机制产生了兴趣,但看了好几天自己还是懵懵懂懂,期间自己看了许多师傅的优质文章,也做了一些例子的复现,于是有了这篇文章,可以说是自己的笔记或总结吧。 由于自己了解的也不是很深入,这篇文章写的技术可能比较浅,像NTLM和Kerberos的中间过
阅读全文
摘要:principals:主体 主体包含标识(identity 对用来来说就是用户名,对程序来说就是SID)和用户角色(role 对用户来说就是 组名 对程序来说就是组SID)subject:主体、主语identifier:标识符 鉴定人authority:专家 授权 官方Access Control
阅读全文
摘要:授权和访问控制组件 下图说明了授权Windows访问控制过程。 在此图中,主题 (由用户启动) 访问对象(如共享文件夹)的过程。 将用户的访问令牌中的信息与对象的安全描述 (AES) 中的访问控制项进行比较,并做出访问决策。 安全主体的 SID 用于用户的访问令牌和对象的安全描述符中的 AES。 授
阅读全文
摘要:安全主体(security principal)? 安全主体是任何可通过操作系统进行身份验证的实体,例如用户帐户、计算机帐户、在用户或计算机帐户的安全上下文中运行的线程或进程,或者这些帐户的安全组。 安全主体一直是控制对计算机中安全资源Windows的基础。 每个安全主体在操作系统中由 SID (唯
阅读全文
摘要:window 访问控制编辑器(Access Control Editor) 右键(文件、目录、程序)》选择属性》安全》高级 进入访问控制编辑器
阅读全文
摘要:安全标识符(SID Security Identifiers) SID是用来标识安全主体。就是给安全主体一个唯一的ID。用户层面通过用户账户名识别,程序和资源之间通过SID识别。 什么是安全标识符? SID (安全) 用于唯一标识安全主体或安全组。 安全主体可以表示任何可通过操作系统进行身份验证的实
阅读全文
摘要:访问掩码格式 所有安全对象都使用下图所示的访问掩码格式来安排其访问权限。 在这种格式中,低16位用于特定对象的访问权限,后8位用于标准访问权限,这些权限适用于大多数类型的对象,而4个高位用于指定通用访问权限每种对象类型可以映射到一组标准和特定于对象的权限。 ACCESS_SYSTEM_SECURIT
阅读全文
摘要:访问控制项 具体内容 : https://docs.microsoft.com/zh-cn/windows-hardware/drivers/ifs/access-control-entry 访问控制条目(ACE)是访问控制列表(ACL)中的元素。一个ACL可以包含零个或多个ACE。每个ACE控制或
阅读全文
摘要:访问控制列表(ACL:Access Control List) ACL列表的结构 ACL 中的每个 ACE 标识一个受信者,并指定该受信者访问规则。安全对象的安全描述符 可以包含两种类型的 ACL:DACL 和 SACL。 DACL:自主访问控制列表(DACL)是安全描述符中最重要的,它里面包含零个
阅读全文
摘要:安全描述符(Security Descriptors,SD) 定义 安全描述符是与安全对象的安全信息,它含有这个对象所有者的SID,以及一个访问控制列表(ACL,Access Control List),访问控制列表又包括了DACL(Discretionary Access Control List
阅读全文
摘要:访问令牌(Access tokens) 访问令牌是描述进程或线程的安全上下文的对象。令牌中的信息包括与进程或线程关联的用户帐户的标识和特权信息。当用户登录时,系统通过将用户密码与安全数据库(如域认证中的NTDS或本地认证中的SAM文件)中存储的信息进行比较来验证用户密码。如果密码经过验证,则系统将生
阅读全文
摘要:访问控制模型的各个部分 访问控制模型有两个基本部分: 访问令牌,其中包含有关已登录用户的信息 安全描述符,其中包含用于保护安全对象 的安全信息 用户登录时 ,系统会对用户 的帐户名和密码进行身份验证。 如果登录成功,系统将创建访问令牌。 代表 此 用户执行的每一个进程都将具有此访问令牌的副本。 访问
阅读全文
摘要:操作系统是一个非常深层次的领域,想学好的话可以说是一个非常困难的事情,不过操作系统涉及的范围很广,我们可以研究一些我们感兴趣、或者说离我们近一些的部分。比如:内存管理,明白了内存管理,可以对整个操作系统的工作会有一个初步的轮廓。 虚拟内存 如果你是电子相关专业的,肯定在大学里捣鼓过单片机。单片机是没
阅读全文