分类 操作系统 下的文章

《Linux System and Performance Monitoring》CPU篇

前言: 原文《Linux System and Performance Monitoring》,本文尝试翻译文章中的CPU篇,并且省略了一些地方,也在一些地方加了自己的理解。

转载请注明出处: http://www.firefoxbug.com/?p=2760

Introducing the CPU

The utilization of a CPU is largely dependent on what resource is attempting to access it. The kernel has a scheduler that is responsible for scheduling two kinds of resources: threads (single or multi) and interrupts. The scheduler gives different priorities to the different resources. The following list outlines the priorities from highest to lowest:

  • Interrupts – Devices tell the kernel that they are done processing. For example, a NIC delivers a packet or a hard drive provides an IO request
  • Kernel (System) Processes – All kernel processing is handled at this level of priority.
  • User Processes – This space is often referred to as “userland”. All software applications run in the user space. This space has the lowest priority in the kernel scheduling mechanism.

In order to understand how the kernel manages these different resources, a few key concepts need to be introduced. The following sections introduce context switches, run queues, and utilization.

- 阅读剩余部分 -

Linux read函数深入

之前Linux read函数浅析-高速缓存说到Linux下读写文件都是通过高速缓存区实现的,应用程序要和底层的设备打交道,首先是通过高速缓存区,要是所要读的数据不存在,高速缓存区会帮应用程序代理去“拿”数据,高速缓存区的处理程序会向设备的驱动程序发出读请求,等待数据返回,这里就说说高速缓存区怎么实现和底层设备驱动函数交互。

- 阅读剩余部分 -

Linux虚拟内存概述

为什么需要虚拟内存?


程序是一系列代码段,数据段的集合,而程序要运行必须是加载到内存里的,但是物理内存就那么大,如何能保证很多个程序都装载进去呢?这里就引进了虚拟内存的概念,虚拟内存基本思想就是,给每个程序都分配一个4G的虚拟的内存,但这部分内存占用的不是物理内存,而是磁盘空间,这部分叫做虚拟存储器,就是安装Linux系统时候的SWAP空间。而对应的物理内存就是物理存储器。
有没有觉得整个过程像开了“空头支票”一样?程序要跑起来,操作系统许诺它给你4G的空间,但却是不能用的,那真要执行的时候怎么办呢?操作系统会把磁盘上的程序代码数据“移”到内存里,把不需要的还会“移”出去到磁盘上,这样看上去就好像可以跑很多进程了。

- 阅读剩余部分 -

Linux文件系统

之前对磁盘分区已经有了详细的描述,这篇主要介绍文件系统.Linux的文件系统是出了名的.下面就

大概介绍下.

可以把文件系统大概分成 SuperBlock inodeBlock DataBlock 三部分

SuperBlock


SuperBlock记录文件系统的基本信息比如每块数据块的大小,空闲磁盘的块数信息.

inodBlock

- 阅读剩余部分 -

Linux内存管理之分页机制

前面一篇文章讲到逻辑地址到线性地址的转换,也就是分段机制的实现.分段机制虽然能够让程序员方便

地管理程序的各个段,并且可以动态调整段的大小,而且对内存的碎片率也大大减小.但是还是没有解决

程序大小比物理内存还大的问题,这时候就出现了分页机制,分页机制的出现最大的体现就是虚拟内存,虚

拟内存的实现可以让大的程序装入内存.分页机制的实现还导致了部分程序装入,按需分配内存,代码共享

等.

- 阅读剩余部分 -

Linux内存管理之分段机制

逻辑地址就是我们普通的段+偏移的表现方式,而线性地址就是段+偏移之后算出来的一个地址,前者可以认

为是二维的地址,而后者可以理解是一维的。线性地址和虚拟地址的概念相接近,不知道其根本的区别。而

物理地址就是实际在地址总线上传输的地址,也就是物理内存访问的真正地址。

如上图,Linux在内存管理上,把逻辑地址通过分段机制变化成线性地址,线性地址也就是4G(32位系统)

的程序地址。线性地址再通过分页机制转化成物理地址,最后CPU去访问物理地址。

- 阅读剩余部分 -

fedora 16 使用LiveCD修复grub2引导--<转>

转自 http://cryinstall.com/?p=121

Mr高 被钟大神忽悠装了Opensuse,然后这俩家伙对装系统的引导项设置不对劲,Opensuse的grub直接装到硬盘的MBR上,

然后华丽丽的把原来Fedora 16的grub2给覆盖了,接着Opensuse又识别不了grub2,…..

现在的孩子都喜欢装系统,win7+fedora,如果先装win7再装fedora,是蛮简单的,如果先装fedora,然后win 7,本文方法也是适用。

 

- 阅读剩余部分 -

win7+fedora16启动项问题

不久前,实验室一个同学电脑上装的本来是win7+fedora16双系统,结果他不想用fedora16了, 就在windows上把fedora16所在的磁盘格式化了。重新启动后win7和fedora16都进不去了。界面就一直停在grub输入的地方。索性就进winPE了,PE进去重新安装了一下C盘,不过是ghost安装的,安装好之后重启结果还是不能进入win7,还是grub引导那里。后来我就直接再进入PE,用里面的修复启动项软件重写了MBR,这下能进入win7了,并且在进入win7后开始自动重写输入表,驱动之类的。我想了下,下面是整个过程的解释。

- 阅读剩余部分 -

操作系统加载简介

不久前协会一个同学装了win7+fedora16,结果那哥们又把win7重装了,这下好了,只能进win7了。。。

自己安装linux和windows双系统曾经一路碰到挫折,linux确实是对分区要求很高的系统,最近看了下鸟哥的书,了解了些linux系统。

- 阅读剩余部分 -

IA32CPU内存管理机制

最近看了一些Inter32CPU的内存管理机制,做个总结,但是我毕竟是新手,对很多东西也是一知半解,希望大家指教。
1.物理内存的管理,这不考虑MMU的内存管理机制,纯粹的对物理内存的管理,在电脑刚启动时候的实模式就应该是对实际物理内存的操作了。
2.虚拟内存的管理,Inter32CPU实现了一个分页的虚拟内存管理机制。

IA32CPU内存管理机制主要就是:分段和分页。平时程序里说的代码段,数据段不完全等于这个段。分页机制可以实现按需内存分配,虚拟地址等功能。对于分段和分页相结合的模式,非常灵活,最简单的情况下,采用平展段模式,禁止分页(通过CRO寄存器的一个比特位来实现)。要是复杂起来,采用不同段管理不同进程的不同数据,采
用分页机制实现按需分配,虚拟内存等。。。

- 阅读剩余部分 -

程序的装载和链接

      今天跑去计算机学院上OS课的时候了解了下程序的装载和链接,虽然很理论,但还是决定记下来,再加些自己的理解。
回来第一件想弄清楚的就是逻辑地址,虚拟地址和物理地址。我去网上查了一下,在http://bbs.chinaunix.net/thread-2083672-1-1.html看到了解释,我觉得解释的很好,就copy下了((*^__^*) )

- 阅读剩余部分 -