2021.4.22牛客刷题小结


前言

个人记录使用

提示:以下是本篇文章正文内容,下面案例仅供参考

C++

1、引用

引用可以被const修饰

2、多继承地址

在多继承中,派生类和被继承的第一个基类的地址相同,和第二个基类的地址不同

3、堆栈

生长方向:对于来讲,生长方向是向上的,也就是向着内存地址增加的方向;
对于来讲,他的生长方向是向下的,是向着内存地址减小的方向增长。

4、继承访问问题

私有继承:

1、私有成员不能被子类访问。
2、私有继承除了私有成员外 在子类中都是私有的。

公有继承

1、基类的公有成员和保护成员在派生类中都不变仍为公有和保护。
2、基类的私有成员应该是不可访问的。

保护继承

1、保护继承时候基类私有成员也是无法访问的。
2、保护继承时其他成员变成保护成员。

5、const成员函数

1、mutable定义可变成员对象(即使在带有const的成员函数中也可改变成员对象的值)
2、C++中类的成员函数都有隐含的this指针,普通的非const成员函数中,this是一个指向类类型的const指针,可改变this所指向的值,但不可以改变this所保存的地址;在const成员函数中,不可改变this所指向的值,也不可改变this保存的地址。因此,当去掉const时,可以改变成员对象的值。

6、无符号数

#include<stdio.h>
int main()
{
    uint32_t a = 100;
    while (a > 0)
    {
        --a;
    }
    printf("%d", a);
    return 0;
}

无符号数可以取到0 取不到负数
如果条件是a>=0 则死循环

操作系统

1、通道程序

首先通道是硬件,是一种特殊的处理机
通道程序是软件,是实现通道功能的软件(比如设备驱动程序就是一种通道程序,可以通过理解设备驱动程序的功能理解通道要做的工作)
通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的。如果将设备比作一支军队的话,通道是军队的高级指挥官,而设备控制器是军队的低级指挥官
通道程序是由一系列通道指令所构成的。

由于通道没有自己的内存,因此编制好的通道程序是存放在主存贮器中的。

2、PCB

进程本身不能通过PCB读取自身状态,操作系统才可以;互斥与同步是进程之间的两种制约关系。

3、fork和exec

1、fork
程序调用fork函数,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了。而如果两个进程要共享什么数据的话,就要使用另一套函数(shmget,shmat,shmdt等)来操作。
现在,已经是两个进程了,对于父进程,fork函数返回了子程序的进程号,而对于子程序,fork函数则返回零,这样,对于程序,只要判断fork函数的返回值,就知道自己是处于父进程还是子进程中。事实上,目前大多数的unix系统在实现上并没有作真正的copy。一般的,CPU都是以“页”为单位分配空间的,象INTEL的CPU,其一页在通常情况下是4K字节大小,而无论是数据段还是堆栈段都是由许多“页”构成的,fork函数复制这两个段,只是“逻辑”上的,并非“物理”上的,也就是说,实际执行fork时,物理空间上两个进程的数据段和堆栈段都还是共享着的,当有一个进程写了某个数据时,这时两个进程之间的数据才有了区别,系统就将有区别的“页”从物理上也分开。系统在空间上的开销就可以达到最小。

2、exec
一个进程一旦调用exec类函数,它本身就“死亡”了。
系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。不过exec类函数中有的还允许继承环境变量之类的信息,这个通过exec系列函数中的一部分函数的参数可以得到。


总结

懒了几天没写小结,今天重新开始。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值