

Took me 2 hrs but result is good
My keeb was very dirty so I cleaned it inside out first one is before second one is after


My keeb was very dirty so I cleaned it inside out first one is before second one is after
so i went to the doctor yesterday for viral infection in there his attendant was registering all the patients in a register notebook, then an idea pop up what if we digitize that data so that the doctor and other medical staff can see the data insights ( i am only considering sole one doctor clinics in here not even one man hospitals also i went to a doctor in metropolitan so it is not rural area) what do you think about that
In Barra for few days any good places to visit nearby.
In Barra for few days any good places to visit nearby.
2 years difference first one is just taken
in this question C. Inversion of a Subsequence of the yesterday's contest how you were able to forsee the if the total sum of the pair which are of differnt value is 0 ( sum of value in a) we can still do it in 2 step i was able to do for even and odd value for greater then 0 but still not able to know why for 0 ( when the sum of a is greater then 0);
in short i like about the under the hood stuff, i made a small OS(similar to ms-dos) currently doing a low level internship(driver support and all), now i want to study about distributed system and make a project on it , i am upcoming in my 3rd year should i do this or do what all are doing al and all( also i dont have any exp in js , ts, html , css ).
Setup
We will need a memory buffer and a pointer to it. For example, let's create a buffer of 512 bytes that will store our allocation blocks, each of which will be 32 bytes. We will call _aligned_malloc throughout the examples in this chapter to allocate our blocks of memory so that the returned memory is always paged aligned. It is recommended to build the allocators in user mode to facilitate debugging. You can simply replace the call of _aligned_malloc to your own alloc_pages function later on. This function should allocate free physical pages and map them into the address space. You can also just set free_list to point to a heap store if you plan to use it as a heap allocator. In all cases, we need free memory to work with.
void
* free_list = _aligned_malloc (512, PAGE_SIZE);
const
int
allocation_block_size = 32;
We then need to initialize the free list. Remember that each block is 32 bytes in this example, so we simply insert a LIST_ENTRY every 32 bytes to create the free list. Note how we set link->next of each entry to point to the next LIST_ENTRY.
LIST_ENTRY* link;
uint8_t* block = (uint8_t*)free_list;
for (
int
i = 0; i < allocation_block_size - 1; i++) {
link = (LIST_ENTRY*) block;
link->next = (LIST_ENTRY*) (block + allocation_block_size);
block += allocation_block_size;
}
/* last entry should point to NULL. */
link = (LIST_ETRY*) block;
link->next = NULL;
The above code creates the free list. Note that each LIST_ENTRY is located right at the start of each allocation block (in this example, each allocation unit is 32 bytes.) We use the free allocation units themselves to store the linked list.
Allocation
Setup
We
will need a memory buffer and a pointer to it. For example, let's
create a buffer of 512 bytes that will store our allocation blocks,
each of which will be 32 bytes. We will call _aligned_malloc
throughout the examples in this
chapter to allocate our blocks of memory so that the returned memory
is always paged aligned. It is recommended to build the allocators in
user mode to facilitate debugging. You can simply replace the call of
_aligned_malloc to
your own alloc_pages function
later on. This function should allocate free physical pages and map
them into the address space. You can also just set free_list
to point to a heap store if you
plan to use it as a heap allocator. In all cases, we need free memory
to work with.
void* free_list = _aligned_malloc (512, PAGE_SIZE);
const int allocation_block_size = 32;
We then need to initialize the free list. Remember that each block is
32 bytes in this example, so we simply insert a LIST_ENTRY every 32
bytes to create the free list. Note how we set link->next of each
entry to point to the next LIST_ENTRY.
LIST_ENTRY* link;
uint8_t* block = (uint8_t*)free_list;
for (int i = 0; i < allocation_block_size - 1; i++) {
link = (LIST_ENTRY*) block;
link->next = (LIST_ENTRY*) (block + allocation_block_size);
block += allocation_block_size;
}
/* last entry should point to NULL. */
link = (LIST_ETRY*) block;
link->next = NULL;
The above code creates the free list. Note that each LIST_ENTRY is
located right at the start of each allocation block (in this example,
each allocation unit is 32 bytes.) We use the free allocation units
themselves to store the linked list.
https://brokenthorn.com/Resources/OSDev26.html , in his tutorial , the allocation_block_size which is used for the for loop will corrupt the memory as the for loop is too big
By vide coded i dont mean ai used for debugging or for understanding, i mean ai slop, i identified some key things such as
​
​
​
​
​
​
I may be wrong in some point, sorry for that.
Hey guys i am an upcoming student in 3rd year, I have only made one good project which is not vibecoded at all , it is a operating system (still in development will be completed after one month similar to ms-dos) and i am doing an unpaid internship in a goverment institute in the os area as well( usb interface and driver), I dont my resume to be completely low level and all can you suggest some legit good software stuff which i can make, i dont want to make any simple crud application.
these are some major updates monarchy have
now i will work on the memory allocator and a file system.
github:- https://github.com/mridul-verma2005
hey guys i have implemented a lot of stuff in my os:-
what is new
github: https://github.com/mridul-verma2005/Monarchy
also i was busy with some uni work, so i want able to add a whole lot of stuff, sorry if you find this update not a quality one.
Can someone clarify it.Ok I am a newbie please dont get upset if i say something stupid but as I was working on the clock I was thinking to first get the initial time from the cmos via the update interupt on irq 8 and then set my user time and then use irq 0 for the 1 ms ticks ( not exactly 1 ms I used the whole and fractional ms thing in decimal and coded in c) the thing is that you have to enable the update interrupt in the status register B ( the same used for to get the 24 vs 12 format and the bcd vs binary format) you have to update the same status register B for the periodic timer ( used by rtc but not connected to time) and an alarm ( dont know exactly what alarm do) then to check for the update interrupt you have to check the status register C. I think these details should be mentioned in the cmos section if someone wants to use the update interrupt to get the time instead wait to first get the clear flag in status register A and then set and then clear again. Sorry if I am wrong in some place.