随笔分类 - OS
摘要:Unix环境高级程序设计入门 ----文件系统的相关编程(上) 一、关于目录 不管是何种操作系统,一提到其中的文件系统首先想到的自然是目录和文件。在Unix系统中一切皆可视为文件,目录是一种特殊的文件。在笔者前已发表的《Unix操作系统的入门与基础》一文中,曾介绍过用户主目录、工作目录以及绝对路径、相对路径的概念,我们也已经知道了使用pwd命令可以获得当前工作目录的绝对路径,那么如何在程序中实现类似于pwd命令的功能呢?这里需要用到getcwd()函数,它的定义是: #include <unistd.h> char* getcwd(char* buf, size_t size);
阅读全文
摘要:我们知道Unix系统对Unix文件的最大长度(一般为1到2M字节)加了更实际的 限制,使用户不会无意中建立一个用完整个磁盘窨所有块的文件.AD:2013大数据全球技术峰会低价抢票中我们知道Unix文件系统是Unix系统的心脏部分,提供了层次结构的目录和文件.文件系统将磁盘空间划分为每1024个字节一组,称为块(block)(也有用512字节 为一块的,如:SCO XENIX).编号从0到整个磁盘的最大块数.全部块可划分为四个部分,块0称为引导块,Unix文件不用该块;块1称为专用块,专用块含有许多信息,其中有磁盘大小和全部块的其它两部分的大小.从块2开始是i节点表,i节点表中含有i节点,表的块
阅读全文
摘要:1 文件系统结构概述磁盘在使用前,需要分区和格式化,格式化的主要作用就是在磁盘分区中创建文件系统,以此来确定文件的存储方式和索引方法,确定磁盘空间的分配和回收算法。UNIX文件系统的存储方式有<目录-i节点-数据块>三级构成,其中目录存储了文件的层次结构,数据块存储了文件的具体信息,i节点是连接文件层次结构与数据内容的桥梁。UNIX文件系统将磁盘空间划分为一系列大小的相同的块,划分为引导块,超级快,i节点区和数据区四部分。文件系统通过节点i对文件进行管理和控制。其中,每个文件对应一个i节点,每个i节点具有唯一的节点号,记录了文件的属性和关联内容在磁盘上的存储位置。但文件名并不记录在
阅读全文
摘要:http://www.linuxdiyf.com/viewarticle.php?id=2662Linux系统的一个重要特征就是支持多种不同的文件系统,如ext、FAT、ext2、ext3、MINIX、MSDOS、SYSV等。目前,Linux主要使用的文件系统是ext2和ext3。ext3是ext2的升级版本,加入了记录数据的日志功能。ext2和ext3都是十分优秀的文件系统,即使系统发生崩溃也能很快修复。Linux系统的第一个文件系统是Minix,1992年引进了第一个专门为Linux设计的文件系统—ext(extended file system),1993年又推出了一个新文件系统—ext
阅读全文
摘要:最近在学习Unix下系统编程,书看的还比较仔细,但是合上书后总是有种雾里看花朦朦胧胧的感觉。俗话说实践出真知,学习编程怎么能不动手呢。既然是学习系统编程那就写一些系统命令来巩固知识,消除朦胧的感觉吧!选中PWD命令,有如下几个原因: 1、 可以加深对Linux文件系统组织结构的理解 2、可以加深对目录结构的理解 3、 可以加深对挂载点和链接的理解 注:关于LINUX文件系统的相关基础知识,大家可以先看看《Linux文件系统详解》:http://www.armjishu.com/bbs/viewtopic.php?id=1754&flag=1578 Unix下一切皆文件,也就...
阅读全文
摘要:Linux的inode的理解:文件名 -> inode -> device block转自: http://www.ruanyifeng.com/blog/2011/12/inode.html http://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作
阅读全文
摘要:1.问题分析实现读者写者(Reader-Writer Problem)问题是一个经典的并发程序设计问题,是经常出现的一种同步问题。所谓读者写者问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量S来当前是否可操作。1.1 问题详细描述有一个被许多进程共享的数据区,这个数据区可以是一个文件,或者主存的一块空间
阅读全文
摘要:用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。这种线程甚至在象 DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似 Windows 3.x 的协作式多任务。内核线程指需要内核的参与,由内核完成线程的调度。其依赖于操作系统核心,由内核的内部需求进行创建和撤销。这两种模型各有其好处和缺点。用户线程不需要额外的内核开支,并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因 I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行
阅读全文
摘要:了解了一下,用户级线程和内核级线程。用户级线程:从这张图上面可以看出来,用户级线程的管理是由应用程序的进程来完成的,而不关内核的事。在内核看来还是只有进程的概念,所以线程的调度也就可以通过应用程序自己设定,不用核心态的特权。但是也就是因为这样,在内核中没有线程的概念,如果一个线程进入内核,然后再系统调用的时候阻塞了,那么,核心只会把它作为整个进程阻塞了,也就是说这个进程中的所有线程都被阻塞了。线程状态和进程状态是独立的(从何说起?不理解)优点: 线程切换不调用核心 调度是应用程序特定的:可以选择最好的算法 ULT可运行在任何操作系统上(只需要线程库)缺点: 大多数系统调用是阻塞的,因此...
阅读全文
摘要:Mutex物件的做法与特性如下: 使用CreateMutex()来产生一个Mutex物件,而传入的Mutex名称字串用以区别不同的Mutex ,也就是说,不管是哪个Process/Thread,只要传入的名称叁数是相同的一个字串,那 CreateMutex()传回值(hMutex, handle of Mutex)会指向相同的一个Mutex物件。这和 Event物件相同。然而Mutex和Event有很大的不同,Mutex有Owner的概念,如果Mutex为 ThreadA所拥有,那麽ThreadA执行WaitForSingleObject()时,并不会停下来,而会立即 传回WAIT_OBJE.
阅读全文
摘要:http://blog.csdn.net/xiaoding133/article/details/7772437
阅读全文
该文被密码保护。
摘要:一,WaitForSingleObject的用法1.WaitForSingleObject的用法DWORDWaitForSingleObject(HANDLEhHandle,DWORDdwMilliseconds);参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT。hHandle可以是下列对象的句柄:ChangenotificationConsoleinputEventJobMemoryresourcenoti
阅读全文
摘要:一:Critiacal_Section1:使用临界区的目的是确保资源每次只能被一个线程所使用。一个线程进入某个临界区,另一个线程就不能够再进入同一个临界区。临界区不是核心对象,它只存在进程的内存空间。没有所谓的句柄,只能在同一进程中的线程间完成同步。2:使用函数 VOID InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); VOID EnterCriticalSection(LPCRIT
阅读全文
该文被密码保护。
摘要:http://longer.spaces.eepw.com.cn/articles/article/item/59362进程只是提供了一段地址空间和内核对象,其运行是通过在其地址空间内的主线程来体现的。当主线程的进入点函数返回时,进程也就随之结束。这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的清除。除了这种进程的正常推出方式外,有时还需要在程序中通过代码来强制结束本进程或其他进程的运行。ExitProcess()函数即可在进程中的某个线程中使用,并将立即终止本进程的运行。ExitProcess()函数原型为: VOID ExitProcess(UINT uExit..
阅读全文

浙公网安备 33010602011771号